Dan*_*tor 6 c++ typedef private
请考虑以下代码:
/*
* myclass.h
*/
class myclass_impl
{
// ...
}
boost::shared_ptr<myclass_impl> myclass;
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式使myclass_impl(或至少直接使用它)对其定义的翻译单元是私有的,允许客户只使用myclasstypedef吗?我想要实现的是如果有人直接使用实现类,编译器会提醒我.
在源文件(而不是头文件)中声明您的类,其他翻译单元将无法访问该类。然后,使用前向声明在头文件中声明指针/引用。
或者定义一个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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |