类构造函数

liooi 2009-11-16 03:21:31
请教下各位高手,类中有个数组,通过构造函数参数如何确定数组的个数
例:
class foo
{
public:
foo(int count):m_nCount(count){};
~foo();

private:
int m_nCount;
int m_Arr[m_nCount];
};

这个 m_count 一定得是常量么,能通过类传入参数改变么?
...全文
103 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
feilongjilei 2009-11-16
  • 打赏
  • 举报
回复
template <size_t N>
class foo
{
public:
~foo();

private:
int m_Arr[N];
};
好像这样也可以吧?
liooi 2009-11-16
  • 打赏
  • 举报
回复
多谢各位了。
xingzhe2001 2009-11-16
  • 打赏
  • 举报
回复
vector应该是最好的解决方案。
liooi 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xingzhe2001 的回复:]
引用 5 楼 liooi 的回复:
引用 1 楼 loaden 的回复:
如果你用VC编译器,那m_count一定得是常量!
因为VC不支持C99


通过类传入参数决定类中数组的个数,该如何解决? 请教
int m_Arr[m_nCount];


直接这样是不行的。
[/Quote]

不想用vector,

int* m_Arr;
构造函数里 m_Arr = new int[count];

这样用应该是可以! 是最好的解决方案么?
aaron0211 2009-11-16
  • 打赏
  • 举报
回复
题外话:
foo(int count):m_nCount(count){}; 

中的分号该去掉吧
newhying 2009-11-16
  • 打赏
  • 举报
回复
class foo
{
public:
foo(int count):m_nCount(count)
{
m_Arr = new int[m_nCount];
};
~foo
(
delete[] m_Arr;
);

private:
int m_nCount;
int* m_Arr;
};

只有这样。
老邓 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liooi 的回复:]
引用 1 楼 loaden 的回复:
如果你用VC编译器,那m_count一定得是常量!
因为VC不支持C99


通过类传入参数决定类中数组的个数,该如何解决? 请教
int m_Arr[m_nCount];

[/Quote]
那只能使用vector<int>或者动态数组了。
推荐vector<int>,因为安全、通用。

vector<int> v;
v.resize(count)

然后:
v[0]
v[1]
...访问
xingzhe2001 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liooi 的回复:]
引用 1 楼 loaden 的回复:
如果你用VC编译器,那m_count一定得是常量!
因为VC不支持C99


通过类传入参数决定类中数组的个数,该如何解决? 请教
int m_Arr[m_nCount];

[/Quote]
直接这样是不行的。
liooi 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 loaden 的回复:]
如果你用VC编译器,那m_count一定得是常量!
因为VC不支持C99
[/Quote]

通过类传入参数决定类中数组的个数,该如何解决? 请教
int m_Arr[m_nCount];
ArmStronger 2009-11-16
  • 打赏
  • 举报
回复
Loaden速度真快!
xingzhe2001 2009-11-16
  • 打赏
  • 举报
回复
你可以用动态数组阿或者你都用c++了,就用vector吧

动态数组:
int* m_Arr;

构造函数里 m_Arr = new int[count];

vector:
vector<int> m_Arr;
老邓 2009-11-16
  • 打赏
  • 举报
回复
你可以使用:std::vector<int>来替换。
推荐。
老邓 2009-11-16
  • 打赏
  • 举报
回复
如果你用VC编译器,那m_count一定得是常量!
因为VC不支持C99

64,654

社区成员

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

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