gpt4 book ai didi

c++ - 翻译单位可以私有(private)类(class)吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:27 24 4
gpt4 key购买 nike

考虑以下代码:

/*
* myclass.h
*/

class myclass_impl
{
// ...
}

boost::shared_ptr<myclass_impl> myclass;

我能否以某种方式使 myclass_impl(或至少直接使用它)对定义它的翻译单元私有(private),从而允许客户仅使用 myclass 类型定义?我想要实现的是让编译器在有人直接使用实现类时提醒我。

最佳答案

在源文件(不是头文件)中声明您的类,其他翻译单元将无法访问它。然后,使用前向声明在头文件中声明指针/引用。

或者定义一个impl头文件,并注释掉它不应该包含在其他源文件中。

/*
* myclass.h
*/

class myclass_impl;

class myclass
{
boost::shared_ptr<myclass_impl> myclass_i;
public:
myclass() : myclass_i(new myclass_impl) { }
int getI() const;
};


/*
* myclass.cpp
*/

class myclass_impl
{
int i;
public:
myclass_impl() : i(4) { }
int getI() const { return i; }
};

int myclass::getI() const
{
return myclass_i->getI();
}

关于c++ - 翻译单位可以私有(private)类(class)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269778/

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