我有一些没有复制构造函数的类(Window)(它是私有(private)的)。我无法理解如何在我自己的类中初始化此类的 var:
class MyClass
{
Window obj; // Hasn't copy constructor
public:
void init()
{
obj = Window(/* constructor params */); // [error]
obj(/* constructor params */); // [error]
}
}
错误 1:正在初始化“Window::Window(WindowHandle, const sf::WindowSettings&)”的参数 1
错误 2:'NonCopyable& NonCopyable::operator=(const NonCopyable&)' 是私有(private)的
但它是这样工作的:
Window obj(/* constructor params */);
最佳答案
使用 initializer list :
class MyClass
{
Window obj; // Hasn't copy constructor
public:
MyClass() :
obj(/* constructor params */)
{
}
}
这也适用于引用。您可以在初始化列表中分配任何成员变量。不过,它仅适用于构造函数。
如果你想让它在构造函数之外工作,你需要使用指针:
class MyClass
{
Window *obj;
public:
void init()
{
obj = new Window(/* constructor params */);
}
}
确保在解构函数中使用delete
释放obj
(必要时将解构函数设为虚拟)。
关于c++ - 没有复制构造函数的初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935173/