委托构造函数:委托构造函数的初始化程序必须单独出现

lea*_*vst 12 c++ constructor delegation superclass c++11

我有一对在C++ 03风格下运行良好的构造函数.其中一个构造函数调用超类(或基类)构造函数......

class Window : public Rectangle
{
public: 
    Window() : win(new RawWindow(*this))
    {
        refresh();  
    }

    Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
    {
        refresh();
    }
...
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何使用新的C++ 11委托ctor功能来解决这个问题.但是,以下代码给出以下编译器错误...

class Window : public Rectangle
{
public: 
    Window() : win(new RawWindow(*this))
    {
        refresh();  
    }

    Window(Rectangle _rect) : Rectangle(_rect), Window(){}
Run Code Online (Sandbox Code Playgroud)

"委托构造函数的初始化程序必须单独出现"......

有没有办法解决??

Pub*_*bby 11

问题是Rectangle初始化两次.

您可以尝试更改哪一个代表什么:

Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
{
    refresh();  
}

Window() : Window(Rectangle()) {}
Run Code Online (Sandbox Code Playgroud)

最好的解决方案可能是避免在此示例中委托构造函数.