Max*_*rai 1 c++ constructor private
我有一个类的对象,它有私有构造函数:
class CL_GUIComponent
{
// ...
private:
CL_SharedPtr<CL_GUIComponent_Impl> impl;
CL_GUIComponent(CL_GUIComponent &other);
CL_GUIComponent &operator =(const CL_GUIComponent &other);
CL_GraphicContext dummy_gc;
};
Run Code Online (Sandbox Code Playgroud)
我有一个类,它有一个指向我之前描述的类型的对象的指针.
class Some
{
private:
CL_GUIComponent *obj;
public:
CL_GUIComponent getComp() { return *obj; }
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码调用了错误:
In member function ‘CL_GUIComponent Some::getComp()’:
error: ‘CL_GUIComponent::CL_GUIComponent(CL_GUIComponent&)’ is private
error: within this context
Run Code Online (Sandbox Code Playgroud)
我如何存储和获取该对象?
返回引用:
CL_GUIComponent& getComp() { return *obj; }
Run Code Online (Sandbox Code Playgroud)
和/或
const CL_GUIComponent& getComp() const { return *obj; }
Run Code Online (Sandbox Code Playgroud)
你有他们的代码试图返回一个副本,但复制构造函数是私有的,所以它无法访问它(因此错误).在任何情况下,对于非平凡的对象,返回一个const&(通常,并非总是)几乎总是更好.