VC++6 错误 C2059:语法错误:'常量'

Posted

技术标签:

【中文标题】VC++6 错误 C2059:语法错误:\'常量\'【英文标题】:VC++6 error C2059: syntax error : 'constant'VC++6 错误 C2059:语法错误:'常量' 【发布时间】:2010-12-23 13:12:32 【问题描述】:

使用 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:语法错误:'常量'

你能告诉我更多吗?

【问题讨论】:

-1 你的确切问题的答案很容易用谷歌搜索出来:cboard.cprogramming.com/cplusplus-programming/… 我也会升级你的编译器,VC6 是一个遗物...... 【参考方案1】:

应该是:

class ok

public:
    Strg v;
    ok() : v(45) 
;

没有默认构造函数的非静态成员变量(在本例中为 v)应使用 initialization lists 进行初始化。另一方面,在函数(如 main)中,您可以使用常规构造函数语法。

【讨论】:

【参考方案2】:

编译器抱怨的是你试图提供关于如何在你的类定义中实例化类成员 v 的指令,这是不允许的。

实例化v 的位置将在构造函数内部,或者在构造函数的初始值设定项列表中。例如:

内部构造函数:

class ok

public:
    Strg v;
    ok() 
        v = Strg(45);
    
;

在初始化列表中:

class ok

public:
    Strg v;
    ok() : v(45) 
;

正确的做法是最后一种(否则,v 还需要一个默认构造函数,并且会被初始化两次)。

【讨论】:

以上是关于VC++6 错误 C2059:语法错误:'常量'的主要内容,如果未能解决你的问题,请参考以下文章

错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”

如何找到 C++ 编译器认为定义为常量的内容?

解决error C2059: 语法错误:“::”问题

变量中的点? VC9 在构建 beecrypt 时出现解析错误

vs2012 MinGW编译ffmpeg 出现libavdevice/avdevice.c(38) : error C2059: 语法错误:“.”

C语言错误 error C2059: 语法错误:“)”以及 错误error C2065: “sockaddr”: 未声明的标识符