我有一对在C ++ 03风格下运行良好的构造函数。其中一个构造函数调用超类(或基类)构造函数......
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
{
refresh();
}
...
我试图找出如何使用新的C ++ 11委托ctor功能来解决这个问题。但是,以下代码给出了以下编译器错误...
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), Window(){}
“委托构造函数的初始化程序必须单独出现”...
有什么方法吗?
答案 0 :(得分:10)
问题是Rectangle
已初始化两次。
您可以尝试更改代表哪一个:
Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
{
refresh();
}
Window() : Window(Rectangle()) {}
最好的解决方案可能是避免在此示例中委托构造函数。