VC++6 错误 C2059: 语法错误: 'constant'
使用 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:语法错误:“常量”
您能告诉我更多信息吗?
Made this simple class with MSVC++ 6.0
class Strg
{
public:
Strg(int max);
private:
int _max;
};
Strg::Strg(int max)
{
_max=max;
}
Sounds good if I use it in :
main()
{
Strg mvar(10);
}
But Now If I use it in an another class :
class ok
{
public:
Strg v(45);
};
I get message error :
error C2059: syntax error : 'constant'
Could you tell me more please ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
应该是:
没有默认构造函数的非静态成员变量(在本例中为 v)应使用 初始化列表。另一方面,在函数(如 main)中,您可以使用常规构造函数语法。
Should be:
Non-static member variables that don't have default constructors (v in this case) should be initialized using initialization lists. In functions (like main) on the other hand you can use the regular constructor syntax.
编译器抱怨的是,您试图提供有关如何在类定义中实例化类成员
v
的指令,这是不允许的。实例化
v
的位置将位于构造函数内部,或者构造函数的初始值设定项列表中。例如:在构造函数内部:
在初始化程序列表中:
正确的方法是最后一个(否则,
v
也需要一个默认构造函数,并且会被初始化两次)。What the compiler is complaining about is that you are trying to provide instruction on how ton instantiate the class member
v
inside your class definition, which is not allowed.The place to instantiate
v
would be inside the contructor, or in the constructor's initializer list. For example:Inside constructor:
In initializer list:
The correct way to do it is the last one (otherwise,
v
would also require a default constructor and would be initialized twice).