题
用MSVC ++ 6.0使这个简单的类
class Strg
{
public:
Strg(int max);
private:
int _max;
};
Strg::Strg(int max)
{
_max=max;
}
如果我使用它,听起来不错:
main()
{
Strg mvar(10);
}
但是现在,如果我在另一个类中使用它:
class ok
{
public:
Strg v(45);
};
我收到消息错误:错误C2059:语法错误:“常数”
你能告诉我更多吗?
没有正确的解决方案
其他提示
应该:
class ok
{
public:
Strg v;
ok() : v(45) {}
};
不具有默认构造函数的非静态成员变量(在这种情况下为V)应使用 初始化列表. 。另一方面,您可以使用常规构造函数语法。
编译器抱怨的是,您正在尝试提供有关如何实例化班级成员的指示 v
在您的课堂定义内,不允许。
实例化的地方 v
将在构造器或构造函数的初始化列表中。例如:
内部构造函数:
class ok
{
public:
Strg v;
ok() {
v = Strg(45);
}
};
在初始化列表中:
class ok
{
public:
Strg v;
ok() : v(45) {}
};
正确的方法是最后一个(否则, v
还需要一个默认的构造函数,并将两次初始化)。
不隶属于 StackOverflow