gpt4 book ai didi

c++ - 私有(private)构造函数

转载 作者:行者123 更新时间:2023-11-30 00:41:21 25 4
gpt4 key购买 nike

我有一个具有私有(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;
};

我有一个类,它有一个指向我之前描述的类型的对象的指针。

class Some
{
private:
CL_GUIComponent *obj;
public:
CL_GUIComponent getComp() { return *obj; }
}

但是这段代码调用错误:

In member function ‘CL_GUIComponent Some::getComp()’:
error: ‘CL_GUIComponent::CL_GUIComponent(CL_GUIComponent&)’ is private
error: within this context

我如何存储和获取该对象?

最佳答案

改为返回引用:

CL_GUIComponent& getComp() { return *obj; } 

和/或

const CL_GUIComponent& getComp() const { return *obj; } 

您拥有的代码试图返回一个拷贝,但复制构造函数是私有(private)的,因此无法访问它(因此出现错误)。在任何情况下,对于非平凡的对象,返回 const& 几乎总是更好(通常,并非总是如此)。

关于c++ - 私有(private)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857797/

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