gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:25 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com