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

Error when creating an object with constructor

本文关键字:出错 创建对象 构造函数      更新时间:2023-10-16

我在使用以下代码时遇到错误:

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
    };
}

这个错误出现在我在"任何东西"课下填写的五个字上。如果我只是写,这个问题就消失了。

Box box (5);

周围没有任何东西类。

如有任何帮助,我们将不胜感激。

内部Anything

Box box(5);

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

您可以使用:

class Anything {
    Box box;
    public:
       Anything : box(5) {}
};

class Anything {
    Box box = Box(5);
};

class Anything {
    Box box{5};
};

原因是这里的box

 class Anything {
    Box box (5);
 };

不是对象,而是类的成员。您需要在构造函数中初始化它(请参见此处(。如果你想创建一个box,你需要做这样的事情:

 class Anything {
        Box box;
    public:
        Anything() : box(5) {}
 };

然后你可以创建一个任意对象,比如:

Anything anything;

并且它将包含一个用5初始化的Box对象box

当然,所有这些都是毫无意义的,因为你实际上无法用Anything做任何事情。它没有其他数据成员或函数