以下代码在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
{
...
};
答案 0 :(得分:0)
如果我是你,我会将typedef声明为:
typedef boost::shared_ptr<IFoo> IFooPtr;
这对我来说更自然,避免了您遇到的问题 - 这是您自己解决的问题。