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

标签 c++

我想在实现文件中隐藏一个实现。如果对象不是公共(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/

相关文章:

c++ - Scons 没有指定 CPPPATH,仍然可以检测到 .h 依赖吗?

c++ - QML:QQmlListProperty<T>。 T 必须是 QObject 吗?

c++ - 如何在 boost 1.57 中安装 boost 模块(应用程序和 dll)

c++ - win32 CreateThread,如何将lpStartAddress参数作为c++类函数调用?

c++ - DDS C++ - 数据分发服务

c++ - STL 插入迭代器

c++ - 使用 Boost.Asio 进行异步解析

c++ - 动态 C++ 函数参数

c++ - 使用模板化类型的模板中的函数原型(prototype)

c++ - C++中的回调模板