0

getFoo以下代码在函数中生成错误,因为MockFoo尚未定义为继承自IFoo. 我怎样才能解决这个问题?最简单的方法是将_foo's 的类型更改为 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
{
    ...
};
4

1 回答 1

0

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

typedef boost::shared_ptr<IFoo> IFooPtr;

这对我来说感觉更自然,并且避免了您遇到的问题 - 并且是您自己提出的解决方案。

于 2013-04-24T11:39:56.667 回答