我想在实现文件中隐藏一个实现。如果对象不是公共(public)的,我不希望对象的 header 在使用我的类的任何地方泄漏。
假设我的类 A
有头文件 A.h
:
#include "Foo.h"
class A{
private:
Foo foo;
public:
do_stuff();
};
现在,无论我要包含 A.h
,还是包含 Foo.h
。但是我在类 A
之外的任何地方都没有用到类 Foo
。我宁愿没有这个 #include "Foo.h"
行。有什么方法可以在实现 A.cpp
中移动“foo”变量的声明吗?
我怀疑一个可能的解决方案涉及添加一层抽象类(接口(interface)类比)。这是最好的解决方案吗?
谢谢。
最佳答案
使用指向 Foo 的指针并动态分配它,而不是使用成员对象。然后你只需要在 A.cpp 中包含 Foo.h。
class Foo;
class A{
private:
Foo* foo;
public:
do_stuff();
}
关于c++ - 是否可以不在类头文件中包含类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137231/