gpt4 book ai didi

c++ - 如何隔离类?

转载 作者:行者123 更新时间:2023-11-30 02:03:39 27 4
gpt4 key购买 nike

foo.h

class Foo {};

namespace {
class Bar {};
//...
}

foo.cpp

Foo foo; // Ok

Bar bar; // Ok, but I want Error!

如何在 *.cpp 文件中隐藏(隔离)class Bar

即我不想将 class Bar {} 从 *.h 文件导入到 *.cpp 文件

也许有某种类的封装技术?

最佳答案

目前还不清楚您的要求是什么。如果您只希望 Bar 在特定的 .cpp 文件中可见,那非常简单:

foo.h:

// add include guard here.
class Foo {};

foo.cpp:

#include "foo.h"

namespace {
class Bar {};
}

Foo foo;

Bar bar;

请注意,这将Bar所有 可见性限制为foo.cppfoo.cpp 之外的任何东西都不会意识到它的存在。

但实际上并没有办法让一个类只在标题中可见——标题的全部意义在于你将它包含在一个或多个 .cpp 文件中,当你这样做时也就是说,它包含的任何内容都在该 .cpp 文件中可见。

如果那是您认为自己想要的,那么您很有可能需要退后一步,告诉我们您真正想要实现的目标。可能有一条路,但你试图走的路几乎肯定是错误的。基本划分是标题用于一般可见的内容;任何私有(private)内容都仅限于实现 (.cpp) 文件。

关于c++ - 如何隔离类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11584689/

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