【发布时间】:2011-02-25 11:36:30
【问题描述】:
我有一些没有复制构造函数的类(Window)(它是私有的)。我不明白如何在我自己的类中初始化这个类的 var:
class MyClass
{
Window obj; // Hasn't copy constructor
public:
void init()
{
obj = Window(/* constructor params */); // [error]
obj(/* constructor params */); // [error]
}
}
错误 1:initializing argument 1 of ‘Window::Window(WindowHandle, const sf::WindowSettings&)’
错误 2:‘NonCopyable& NonCopyable::operator=(const NonCopyable&)’ is private
但它是这样工作的:
Window obj(/* constructor params */);
【问题讨论】:
-
你的类使用
init()成员函数而不是使用构造函数有什么原因吗? -
@sbi,是的,有。不要问为什么=)
-
我重新表述:您使用
init()成员有好的理由吗? (一个很好的理由是,例如,如果初始化需要调用虚函数,则需要两步构造。)
标签: c++ constructor copy init