使用此代码时遇到错误:
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
};
}
错误出现在我在Anything类下填写的五个错误中。 如果我写的话,问题就会消失。
Box box (5);
没有围绕它的任何课程。
任何帮助都将不胜感激。
答案 0 :(得分:4)
在Anything
内,
Box box(5);
对于声明成员变量并初始化它无效。
您可以使用:
class Anything {
Box box;
public:
Anything : box(5) {}
};
或
class Anything {
Box box = Box(5);
};
或
class Anything {
Box box{5};
};
答案 1 :(得分:0)
原因是因为box
在这里:
class Anything {
Box box (5);
};
不是一个对象,它是该类的成员。您需要在构造函数(see here)中初始化它。如果您希望能够创建box
,则需要执行以下操作:
class Anything {
Box box;
public:
Anything() : box(5) {}
};
然后你可以创建一个任何对象:
Anything anything;
它将包含一个{5}初始化的Box
对象box
。
当然所有这一切都毫无意义,因为你实际上无法对Anything
做任何事情。它没有其他数据成员或功能......