使用构造函数创建对象时出错

mch*_*l12 1 c++ visual-c++ c++11

我在使用这段代码时遇到了错误:

class Box {
public:
    Box (int);
};

Box::Box (int a) {
    //sample code   
}

int main() {
    class Anything {
        Box box (5); // error: expected identifier before numberic constant
                     // error: expected ',' or '...' before numeric constant
    };
}
Run Code Online (Sandbox Code Playgroud)

该错误出现在我在 Anything 类下填写的五项上。如果我只是写,这个问题就会消失。

Box box (5);
Run Code Online (Sandbox Code Playgroud)

没有周围的 Anything 类。

任何帮助,将不胜感激。

R S*_*ahu 5

里面Anything

Box box(5);
Run Code Online (Sandbox Code Playgroud)

对于声明成员变量并初始化它无效。

您可以使用:

class Anything {
    Box box;
    public:
       Anything : box(5) {}
};
Run Code Online (Sandbox Code Playgroud)

或者

class Anything {
    Box box = Box(5);
};
Run Code Online (Sandbox Code Playgroud)

或者

class Anything {
    Box box{5};
};
Run Code Online (Sandbox Code Playgroud)

  • `Box box{5};` 也应该对类内成员初始值设定项起作用。 (4认同)