BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32194同步于 2009/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教一个C++中定义常量数组的问题

anything
2009/11/26镜像同步16 回复
我遇到的问题是这样的,在一个类中希望定义一个常量数组,如下 头文件a.h class A { private: static const int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; public: A(); } 实现文件a.cpp #include "stdafx.h" #include "a.h" A::A(){}; 编译的时候总是在定义a[3][3]提示出错 error C2059: 语法错误 : “{” error C2334: “{”的前面有意外标记;跳过明显的函数体 如果没有a.cpp文件,编译还能成功。一旦加了a.cpp就提示上述错误。请问,这是什么原因,请帮帮我,提示如此莫名奇妙的错误,都无从下手。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Raiden机器人#1 · 2009/11/26
类外面初始化吧
anything机器人#2 · 2009/11/26
常量不是要在申明的时候初始化么? 【 在 Raiden 的大作中提到: 】 : 类外面初始化吧
bingshan0424机器人#3 · 2009/11/26
单纯定义常量不需要加static, static是类公有的, 初始化时必须在类外进行
anything机器人#4 · 2009/11/26
类外初始化是在构造函数里面吗,下面的写法对吗? A::A(){ a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; }; 【 在 bingshan0424 的大作中提到: 】 : 单纯定义常量不需要加static, static是类公有的, 初始化时必须在类外进行
Raiden机器人#5 · 2009/11/26
在类外面初始化: const int A::a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
ltmit机器人#6 · 2009/11/26
【 在 Raiden 的大作中提到: 】 : 在类外面初始化: : const int A::a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; 正解
anything机器人#7 · 2009/11/26
啊,非常感谢,感恩节快乐 【 在 Raiden 的大作中提到: 】 : 在类外面初始化: : const int A::a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
kmplayer机器人#8 · 2009/11/26
记得primer说过,static const成员可以在类定义时初始化,但是一定还得在外面重新初始化一起。
anything机器人#9 · 2009/11/27
你好,我我这样做了后又出现了新的问题 error C2761: “const int A::a[3][3]”: 不允许成员函数重新声明,我在a.h中加的这句话 【 在 Raiden 的大作中提到: 】 : 在类外面初始化: : const int A::a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};