类常量成员怎么初始化?

CC2530 2011-07-07 09:12:16

#define buf_size_t unsigned int
template <typename T> class BUF_OBJECT
{
public:

buf_size_t in;
buf_size_t out;

T * const buf_room; //C++
const buf_size_t buf_size;

BUF_OBJECT(T *__buf_room,buf_size_t __buf_size)
{
buf_size=__buf_size;
buf_room=__buf_room;
}
}


编译报错:
Error[Pe366]: "BUF_OBJECT<T>::BUF_OBJECT(T *, uint16)" provides no initializer for:
const member "BUF_OBJECT<T>::buf_room"
const member "BUF_OBJECT<T>::buf_size"

...全文
660 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harper 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zhifeiya 的回复:]
1)在类中不能用const来创建常量!因为:类只是描述了对象的形式,并没有真正创建对象!所以, 在对象建立之前,并没有存值空间!
2)而const你是用来创建常量的!
[/Quote]


方法1 你可以用枚举:
class a
{
enum{buf_size_t buf_size=、、、}//用枚举创建一个常量,但不是数据成员

}
方法2 你可以用static
class a
{
private:
static const buf_size_t buf_size=30;//该常量将与憋得静态常量存储在一起,而不是存储在对象中


}
Harper 2011-08-01
  • 打赏
  • 举报
回复
1)在类中不能用const来创建常量!因为:类只是描述了对象的形式,并没有真正创建对象!所以, 在对象建立之前,并没有存值空间!
2)而const你是用来创建常量的!
I_code 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 beyondhaven 的回复:]
常量必须在定义时候初始化。
[/Quote]
+1
mibbadman 2011-07-07
  • 打赏
  • 举报
回复
常量声明时 赋值
pathuang68 2011-07-07
  • 打赏
  • 举报
回复
nightkids_008 2011-07-07
  • 打赏
  • 举报
回复
初始化列表中
liurong14201024 2011-07-07
  • 打赏
  • 举报
回复
常数据成员的初始值只能通过构造函数获取,并且只能在构造函数的初始值列表中设置其初始值
zzzzzzz_zhj 2011-07-07
  • 打赏
  • 举报
回复
构造的初始化列表可以定义;
你既然用了模版可以把常量定义成版参嘛。。实例的时候就可以实现
至善者善之敌 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qingcairousi 的回复:]
C/C++ code

BUF_OBJECT(T *__buf_room,buf_size_t __buf_size) : buf_size(__buf_size), buf_room(__buf_room)
{
}
[/Quote]

++++1
必须在构造函数里初始化,注意你那样是赋值,不是初始化
VC天下 2011-07-07
  • 打赏
  • 举报
回复
常量必须在定义时候初始化。
紫色动力 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bdmh 的回复:]

const变量必须赋予初值,否则就去掉const
[/Quote]
嗯,就是这样,呵呵!!!
  • 打赏
  • 举报
回复
我也来顶一下
fukang258369 2011-07-07
  • 打赏
  • 举报
回复
常量是在定义时候直接初始化。
就想叫yoko 2011-07-07
  • 打赏
  • 举报
回复
const 数据成员需要在初始化成员列表中初始化
qingcairousi 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tab0tab 的回复:]

去掉const,常量必需在定义时赋值
[/Quote]
那是static const
const 的话,在构造函数的初始化列表中赋值就可以了
bdmh 2011-07-07
  • 打赏
  • 举报
回复
const变量必须赋予初值,否则就去掉const
tab0tab 2011-07-07
  • 打赏
  • 举报
回复
去掉const,常量必需在定义时赋值
qingcairousi 2011-07-07
  • 打赏
  • 举报
回复

BUF_OBJECT(T *__buf_room,buf_size_t __buf_size) : buf_size(__buf_size), buf_room(__buf_room)
{
}
szqh97 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wwyyxx26 的回复:]
初始化列表里赋初值
[/Quote]
wwyyxx26 2011-07-07
  • 打赏
  • 举报
回复
初始化列表里赋初值
加载更多回复(1)

64,642

社区成员

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

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