社区
C++ 语言
帖子详情
能在类初始化时传入数组大小吗?
liyxxx
2010-08-30 11:20:09
请教下各位高手,我写了一个类,包含一个数组成员,而这个数组大小是在程序编译的时候确定的。比如有这么一个类:
#define NUM 100
class Myclass
{
public:
Myclass();
private:
string MyData[NUM];
};
可是我想在类被程序包含使用的时候,由程序决定这个数组的大小,就是说,这个#define NUM 10是由使用类的程序来决定的,如果不更改类的代码,有什么办法可以实现吗?我想把类做的能通用一点。
...全文
188
17
打赏
收藏
能在类初始化时传入数组大小吗?
请教下各位高手,我写了一个类,包含一个数组成员,而这个数组大小是在程序编译的时候确定的。比如有这么一个类: #define NUM 100 class Myclass { public: Myclass(); private: string MyData[NUM]; }; 可是我想在类被程序包含使用的时候,由程序决定这个数组的大小,就是说,这个#define NUM 10是由使用类的程序来决定的,如果不更改类的代码,有什么办法可以实现吗?我想把类做的能通用一点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
arong1234
2010-08-30
打赏
举报
回复
不用,就永远不会[Quote=引用 16 楼 liyxxx 的回复:]
谢谢楼上,一语中的。主要是对new心存畏惧,而且对资源的占用不放心。毕竟在掌上设备中资源有限。
自己也是个新手,学艺不精呀。
[/Quote]
liyxxx
2010-08-30
打赏
举报
回复
谢谢楼上,一语中的。主要是对new心存畏惧,而且对资源的占用不放心。毕竟在掌上设备中资源有限。
自己也是个新手,学艺不精呀。
arong1234
2010-08-30
打赏
举报
回复
我想问题关键是:这明明是适合使用new的情况,何必强迫自己一定要用固定尺寸?使用new的数组多好控制,何必用宏[Quote=引用 14 楼 liyxxx 的回复:]
恩,估计只能这么做了,我把简单的问题搞复杂了。本来是想,做个类,放在任何程序中,只要一包含就可以用了,而且程序中并不知道需要定义NUM。或者像函数那样可以把NUM传给类,呵呵,似乎有点异想天开。最后想想,还是这样解决吧,虽然不完美,起码程序中没定义NUM时也不会出错。谢谢各位的热心。
#ifndef NUM
#define NUM 10
#endif
[/Quote]
liyxxx
2010-08-30
打赏
举报
回复
恩,估计只能这么做了,我把简单的问题搞复杂了。本来是想,做个类,放在任何程序中,只要一包含就可以用了,而且程序中并不知道需要定义NUM。或者像函数那样可以把NUM传给类,呵呵,似乎有点异想天开。最后想想,还是这样解决吧,虽然不完美,起码程序中没定义NUM时也不会出错。谢谢各位的热心。
#ifndef NUM
#define NUM 10
#endif
arong1234
2010-08-30
打赏
举报
回复
你不同的程序中把宏定义成不同的值不就可以?[Quote=引用 11 楼 liyxxx 的回复:]
哎,难道我没有表述清楚?这个NUM是在程序编译的时候确定的,但是在不同的程序中是不一样的。我只是希望将类放在别的程序中时不需要做任何改动。
[/Quote]
dingshaofengbinbin
2010-08-30
打赏
举报
回复
[Quote=引用 8 楼 hai040 的回复:]
其实还是可以的
模板
template <int n>
...
string xx[n];
};
[/Quote]
这个可以!!!
#include <iostream>
using namespace std;
template<int n>
class A
{
public:
A(){}
~A(){}
char b[n];
};
int main()
{
A<10> *a=new A<10>();
cout<<sizeof(a->b)<<endl;
return 0;
}
输出的是10.
liyxxx
2010-08-30
打赏
举报
回复
哎,难道我没有表述清楚?这个NUM是在程序
编译
的时候确定的,但是在
不同的程序
中是不一样的。我只是希望将类放在别的程序中时不需要做任何改动。
小楫轻舟
2010-08-30
打赏
举报
回复
[Quote=引用 9 楼 liyxxx 的回复:]
直接写10当然可以,可是我说过了,想把类做的通用一些,这个10是在程序中决定的,而不是类中。
如果把类包含在别的程序中,这个数值是要更改的,而我不想改动类。
[/Quote]
又想通用,又不想改动类?
有点无语啊
liyxxx
2010-08-30
打赏
举报
回复
直接写10当然可以,可是我说过了,想把类做的通用一些,这个10是在程序中决定的,而不是类中。
如果把类包含在别的程序中,这个数值是要更改的,而我不想改动类。
hai040
2010-08-30
打赏
举报
回复
其实还是可以的
模板
template <int n>
...
string xx[n];
};
arong1234
2010-08-30
打赏
举报
回复
而且,既然你说“由程序决定这个数组的大小”,那么这个数组得大小就不是固定得,或者至少是需要计算才固定得,那么这就是不行得
[Quote=引用楼主 liyxxx 的回复:]
请教下各位高手,我写了一个类,包含一个数组成员,而这个数组大小是在程序编译的时候确定的。比如有这么一个类:
#define NUM 100
class Myclass
{
public:
Myclass();
private:
string MyData[NUM];
};
可是我想在类被程序包含使用的时候,由程序决定这个数组的大小,就是说,这个#define NUM 10是由使用……
[/Quote]
arong1234
2010-08-30
打赏
举报
回复
你既然都固定了,干吗一定要宏?直接写10不就可以?即使要宏,你也可以在类定义前定义宏啊?难道你在类中用这个宏还遇到问题了?
[Quote=引用 5 楼 liyxxx 的回复:]
可是,在程序编译的时候,数组大小是已经确定了的,并不需要动态改变。难道也没有办法实现?
也就是说,有没有办法把这句#define NUM 10放到程序中,而在类中可以使用NUM。
[/Quote]
liyxxx
2010-08-30
打赏
举报
回复
可是,在程序编译的时候,数组大小是已经确定了的,并不需要动态改变。难道也没有办法实现?
也就是说,有没有办法把这句#define NUM 10放到程序中,而在类中可以使用NUM。
cbib_cat
2010-08-30
打赏
举报
回复
数组的空间分配在编译期间就要完成。
pengzhixi
2010-08-30
打赏
举报
回复
用new或者vector吧
小楫轻舟
2010-08-30
打赏
举报
回复
new
arong1234
2010-08-30
打赏
举报
回复
不行,你只能用new来实现动态数组
《C语言基础》 之 第8章
数组
课程内容:
数组
的声明、定义(
初始化
)、
数组
的赋值、
数组
在内存中的空间特点、使用 [ ] 访问
数组
元素、
数组
元素的指针、
数组
第一个元素指针的表示方法、
数组
命令与++、sizeof与
数组
、
数组
名总结、函数普通传参回顾...
ArrayList(int initialCapacity)会不会
初始化
数组
大小
?
今天看到一个如博客题目问题,想着应该会
初始化
吧,不然这个构造方法
时
干嘛的是吧。 话不多说,直接上代码,看下就好了。 public static void main(String[] args) { ArrayList<String> list = new ...
数组
介绍(静态,动态
初始化
)
数组
的遍历
数组
介绍(静态,动态
初始化
)
数组
的遍历
数组
介绍(静态,动态
初始化
)
数组
的遍历
数组
遍历案例
数组
中常见的异常
数组
我们常说的是一维
数组
,二维
数组
等等,严格意义来说在java中是没有一维
数组
的,数据本身...
C语言-
数组
的
初始化
,
数组
和指针,函数与
数组
初始化
2.1 整体
初始化
2.2 部分
初始化
2.3
大小
2.4 赋值3.
数组
与指针4. 函数与
数组
4.1 传递
数组
给函数4.2 从函数返回
数组
2.
初始化
2.1 整体
初始化
对比下面三段代码,分析输出。 代码一 int arr[12]; ...
c语言将
数组
初始化
为1_C语言中
数组
的
初始化
2.定义的
时
候不指定
数组
大小
,由
初始化
的
数组
元素来确定
大小
:int array[] = {1,2,3,4,5};3.先定义变量,然后
初始化
.注意点:定义变量
时
必须制定
数组
的
大小
.此
时
只能对
数组
变量成员元素逐一赋值,不能批量赋值.// int ...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章