注册 登录
编程论坛 C++教室

类成员的初始化问题

墨清扬 发布于 2012-04-25 20:29, 597 次点击
我定义了一个类,里面有指针成员,是要分配内存的,所以一定要自己定义构造函数,而且要传入参数来分配合适的内存
问题是,要用这个类定义一个全局变量,但是用来初始化的值在用户输入后才知道,这样的话在定义时就不能用上述构造函数构造了
我现在的解决办法是定义一个不用参数的构造函数,指针都赋值为空,再定义一个initial来替换原来的构造函数,用户输入后用这个函数来分配内存
但是这样是有隐患的,用户不知道一开始定义出的变量不能直接用,因为一些成员函数要访问指针指向的内存,而且析构函数要释放指针指向的内存

那么有没有什么好办法能解决这个问题呢?
7 回复
#2
rjsp2012-04-26 08:25
你这更多的是逻辑问题,只有先解决的逻辑错误
#3
天使梦魔2012-04-26 11:38
把功能接口添加"必须初始化"的参数,这样用户在使用这个功能前必须给出"初始化"参数.
#4
墨清扬2012-04-26 20:01
回复 2楼 rjsp
能否详细地说一说?
#5
墨清扬2012-04-26 20:01
回复 3楼 天使梦魔
能具体点吗?
#6
specilize2012-04-26 20:47
即使用单件可以消除隐患,在第一次使用时初始化,分配内存,但是用户还是会感觉很奇怪,怎么突然跑出一个东西来叫我输入一个值,并且每次出现的位置不固定,这次在这,下次在那,因为全局变量的首次使用时间不固定,不知rjsp所说的逻辑错误是不是指这
#7
墨清扬2012-04-27 19:34
回复 6楼 specilize
我觉得这个很正常吧,有些东西使用之前就一定要有确定的参数的,比如你画图就要先设置画布大小等等一样,只不过有默认的参数而已。
#8
pangding2012-04-29 10:30
如果你不想劳烦用户的话,可以自己控制内存的大小。在一开始分配一个预估的值(也可以靠读配置文件来确定应该用多大),如果将来发现不够用,可以再自动扩展。可以给一个接口,让用户手动调整大小。
如果你觉得这样实现起来麻烦,我觉得就一上来要求用户提供一些初始化信息也很正常。不过正如 6楼 所说,不要搞成随机位置,这样容易打扰用户。
1