关于static const成员变量在类内赋值的问题

flybywind 2009-11-06 03:05:17
在C++Primer中提到可以在类内对static const变量赋值,但需要在类外定义。我按照它说的做了,但是却提示:
error C2258: illegal pure syntax, must be '= 0'
error C2252: 'nameSize' : pure specifier can only be specified for functions

// header file
class Account {
// ...
private:
static const int nameSize = 16;
static const char name[nameSize];
};
// text file 这两句话到底该放哪里?文本文件?
const int Account::nameSize; // member definition needed
const char Account::name[nameSize] = "Savings Account";

//main.cpp
#include "stdafx.h"
#include "Account.h"

int main(int argc, char* argv[])
{
Account a;
return 0;
}


...全文
769 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
e090410416 2011-12-06
  • 打赏
  • 举报
回复
嗯 还是放到类的创建函数之中吧
蘅芷青芬 2011-04-05
  • 打赏
  • 举报
回复
还是没懂
  • 打赏
  • 举报
回复
static const char name[nameSize];


nameSize是const变量,应该没问题啊,难道真是编译器问题。
xsoda 2009-11-07
  • 打赏
  • 举报
回复
为什么不这样写呢?
// header file
#define NAME_SIZE 16
class Account {
// ...
private:
static const char name[NAME_SIZE];
};
//类实现文件 *.CPP
const char Account::name[nameSize] = "Savings Account";
mstlq 2009-11-07
  • 打赏
  • 举报
回复

class Account {
// ...
private:
static const int nameSize ;
static const char name[];
};
// text file 这两句话到底该放哪里?文本文件?
const int Account::nameSize=16; // member definition needed
const char Account::name[nameSize] = "Savings Account";

int main(int argc, char* argv[])
{
Account a;
return 0;
}
lori227 2009-11-07
  • 打赏
  • 举报
回复
用枚举吧~~
flybywind 2009-11-07
  • 打赏
  • 举报
回复
去掉也不对啊!
CyberLogix 2009-11-07
  • 打赏
  • 举报
回复
什么年代了,还有VC6,升级编译器把,用VC9把
huqinglu123 2009-11-07
  • 打赏
  • 举报
回复
在C++Primer中提到可以在类内对static const变量赋值,但需要在类外定义

这句话好像说反了,我不知道你说的是否行得通,但正常情况下都是类内定义,类外初始化就像6楼那样
sj13426074890 2009-11-07
  • 打赏
  • 举报
回复
static 变量 的定义不要放在.h中
static const 应该没有事
genlic 2009-11-07
  • 打赏
  • 举报
回复
如果楼主是想要在类里面申明一个数组,但是下标【n】,也就是n的值要注意:
static const n = 23;
static const char ch[n];//这样是合法的

其实也可以用enum枚举:
class A
{
enum{number = 4};
int arr[number];
};//编译通过。

希望对楼主有帮助~~
taodm 2009-11-06
  • 打赏
  • 举报
回复
珍惜生命,远离VC6
limaolinghu 2009-11-06
  • 打赏
  • 举报
回复
同上,const 变量必须初始化
Jinhao 2009-11-06
  • 打赏
  • 举报
回复
是编译器的问题。


const int Account::nameSize; // member definition needed,这句可省。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧