У меня есть такие классы:
class ParkingLot
{
public:
int spaces;
virtual bool something() { return true; }
}
class ParkingLotBuilding
{
public:
ParkingLot Floor1, Floor2;
}
У меня есть множество функций, которые используют ParkingLotBuilding. Скажем, кто-то (я) является производным от ParkingLot и ParkingLotBuilding:
class DerivedParkingLot : public ParkingLot
{
public:
virtual bool something() { return false; }
}
class DerivedParkingLotBuilding : public ParkingLotBuilding
{
public:
// how can I make it so that Floor1 and Floor2 are for DerivedParkingLot?
}
У меня есть функции, которые я не контролирую, вот такие:
CheckBuilding( ParkingLotBuilding &building )
{
if(building.Floor1.something() == true)
// error
}
Если я передам объект DerivedParkingLotBuilding этой функции, как мне сделать так, чтобы он вызывал DerivedParkingLot::something() для возврата false? Это возможно? Извините, если я не объяснил это правильно, я не уверен, как спросить о проблеме. Спасибо
ParkingLotBuilding
содержитParkingLot
значений, а неParkingLot
указателей или ссылок, их нельзя использовать полиморфно, даже вDerivedParkingLot
. - person zindorsky   schedule 23.08.2013