我想知道我是否可以拆分C ++类声明
原班
class P
{
private:
int id;
//some really secret method
int secretMethod();
protected:
int x;
public:
P();
int getX();
};
Run Code Online (Sandbox Code Playgroud)
我只想在.h中显示public和protected方法和属性,并在其他地方声明private,而类的用户看不到它。
想要的类声明:
class P
{
protected:
int x;
public:
P();
int getX();
};
Run Code Online (Sandbox Code Playgroud)
编辑:我想要的是:
是的,有可能,但不是直接的方式。这是您的工作:
my_object.h:
struct my_object {
void fun();
my_object();
my_object(my_object const&);
~my_object();
my_object& operator = (my_object);
protected:
void pfun();
private:
struct impl;
std::unique_ptr<impl> pimpl;
};
Run Code Online (Sandbox Code Playgroud)
my_object.cpp:
struct my_object::impl {
void fun() { do stuff...}
void pfun() { do other stuff... }
int private_member;
};
my_object::my_object() : pimpl(new impl) {}
my_object::my_object(my_object const& o) : pimpl(new impl(*o.pimpl) {}
my_object::~my_object() {}
my_object& my_object::operator = (my_object o) { swap(pimpl, o.pimpl); return *this; }
void my_object::fun() { pimpl->fun(); }
void my_object::pfun() { pimpl->pfun(); }
Run Code Online (Sandbox Code Playgroud)
如您所见,这需要大量工作,并且需要堆。一切保持平衡...在需要时使用。
| 归档时间: |
|
| 查看次数: |
5824 次 |
| 最近记录: |