15

我有一对在 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(){}

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

有没有办法解决??

4

1 回答 1

14

问题是Rectangle被初始化了两次。

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

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

Window() : Window(Rectangle()) {}

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

于 2012-11-27T18:45:11.620 回答