【发布时间】:2011-09-23 11:18:28
【问题描述】:
我有一个类 (A),它必须包含两个文件,类 X 和类 Y。不幸的是,类 Y 还需要在其头文件中包含类 X,因为构造函数将指向类 X 类型的指针作为参数.
潜在的问题是会出现链接器错误?因为 A 类现在有两个 X 类的副本,一个它需要使用,一个来自 Y 类。这就是标题保护没有用的情况。我的问题是 - 这纯粹是一个结构性问题还是有办法解决这个问题?
我真的不希望在类 Y 的头文件中包含任何东西,以防我想在其他任何东西中包含它,但由于函数原型的原因,有必要吗?
【问题讨论】:
-
这应该不是问题,只要您没有在头文件中定义任何非内联函数。你能发布一些有代表性的代码吗?
-
其实我很抱歉,我认为错误来自其他地方。尽管如此,这还是值得学习的。那么只要头文件只包含原型,就可以包含多个相同的没有任何问题?
-
您可以拥有类定义以及成员函数定义,只要它们被内联到类主体本身,例如:
class X { int foo() { return 1; } };。这不好:class X { int foo(); }; int X::foo() { return 1; }. -
刚刚对问题进行了小幅编辑,因此它对社区更有用 - 现在是理论上的问题,但内容相同。
标签: c++