Следующий код генерирует ошибку в функции getFoo
, поскольку MockFoo
еще не определен как унаследованный от IFoo
. Как я могу это исправить? Самый простой способ - изменить тип _foo
на IFooPtr. Но я бы предпочел не делать это, если это возможно. Я не могу изменить порядок классы определены вПередовая декларация и наследование
class MockFoo;
typedef boost::shared_ptr<MockFoo> MockFooPtr;
class MockBar: public IBar
{
virtual IStructPtr getFoo() const {
return _foo;
}
...
MockFooPtr _foo;
};
class MockFoo: public IFoo
{
...
};
Вы можете переместить определение функции 'getFoo' после определения класса' MockFoo'? (или еще лучше в другой исходный файл .cpp) –
Я предполагаю, что после заполнения деталей невозможно просто полностью объявить 'MockFoo' перед' MockBar', как это было бы возможно в этом примере, правильно? –
@Euro Micelli Правильно! – Baz