是否可以不在类头文件中包含类变量?

1 c++

我想隐藏实现文件中的实现.如果对象不是公共的,我不希望对象的标题在我的类被使用的任何地方泄漏.

假设A.h我的课程有头文件A:

#include "Foo.h"

class A{
    private:
        Foo foo;
    public:
        do_stuff();
};
Run Code Online (Sandbox Code Playgroud)

现在无论我在哪里A.h,Foo.h也包括在内.但是我没有在课外的Foo任何地方上课A.我宁愿没有这#include "Foo.h"条线.有没有办法在实现中移动'foo'变量的声明A.cpp

我怀疑一个可能的解决方案是添加一层抽象类(接口类比).这是最好的解决方案吗?

谢谢.

Dav*_*vid 12

使用指向Foo的指针并动态分配它,而不是使用成员对象.那么你只需要在A.cpp中包含Foo.h.

class Foo;

class A{
    private:
        Foo* foo;
    public:
        do_stuff();
}
Run Code Online (Sandbox Code Playgroud)

  • +1,这是"PIMPL"的习语,是标准做法. (7认同)