假设我在.h文件中有一个类的私有数据成员
private:
eventlist *pointer;
int counter;
int size;
和这个结构类型
struct eventlist// Define our struct type
{
char name[100];
char todo[100];
char where[100];
char when[100];
char attended[100];
char excitement[100];
};
我想创建一个动态的结构数组。以下是我作为构造函数的内容......
summerlist::summerlist()
{
size = 0;// Initialize size to zero
counter = 0;//Initialize counter to zero
pointer = new eventlist[size];
strcpy(pointer[0].name,"\0");
strcpy(pointer[0].todo,"\0");
strcpy(pointer[0].where,"\0");
strcpy(pointer[0].when,"\0");
strcpy(pointer[0].attended,"\0");
strcpy(pointer[0].excitement,"\0");
}
我很好奇:
答案 0 :(得分:2)
delete
您创建的任何内存。我会建议你的课程的析构函数。请务必将new[]
与delete[]
匹配。最后请注意,这种类型的代码有利于学习,但对c++
中的实现有害。除非你有某种形式的内存限制(你显然没有创建一大堆动态存储结构),所以你应该切换到使用一些内置的c ++类型,比如std::vector
来替换你的动态数组,std::string
替换char
数组。
struct eventlist {
std::string name;
...
}
class summerlist {
public:
summerlist();
private:
std::vector<eventlist> pointer;
int counter;
}
summerlist::summerlist()
{
counter = 0;// Initialize the counter to zero
}
这更容易使用和控制。而且你避免了这样做的错误:pointer = new eventlist[size];
size
为0.这可以让你头疼。