前向声明和继承
Forward declaration and inheritance
下面的代码在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
{
...
};
如果我是你,我会声明typepedef为:
typedef boost::shared_ptr<IFoo> IFooPtr;
这对我来说更自然,避免了你正在经历的问题——这是你自己想出的解决方案。
相关文章:
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 如何在QT Creator上将QWidget声明为继承类的对象
- 为什么C++需要公共继承,忽略朋友声明,才能使动态向下工作?
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 在使用受保护和继承时无法访问在类中声明的私有成员
- C++ 声明继承的构造函数?
- C++具有继承列表的模板声明
- 如何对继承的文件使用前向声明
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 有什么理由在没有继承的情况下声明一个虚拟方法
- 具有继承的未声明标识符(运算符 ostream)
- 为什么使用声明不会继承移动构造函数
- 带有递归继承和使用声明的Variadic模板
- 带有智能指针和继承的构造函数的前向声明
- 声明从C 中的其他类模板继承的类模板
- 错误 - 根据 G++ 未声明的继承类字段
- 在C 中使用继承时,请避免使用未缴纳的函数声明/定义
- 来自无法识别的继承结构的本地声明
- C++ 嵌套前向声明继承
- clang/g++ 与私有继承和使用声明的区别