前向声明和继承

时间:2013-04-24 11:38:14

标签: c++

以下代码在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
{
    ...
};

1 个答案:

答案 0 :(得分:0)

如果我是你,我会将typedef声明为:

typedef boost::shared_ptr<IFoo> IFooPtr;

这对我来说更自然,避免了您遇到的问题 - 这是您自己解决的问题。