如果这个问题很难理解,我很抱歉,但我不知道该怎么说。
举个例子,我有一个像下面这样的结构,
struct Days {
int counter;
};
总的来说,我有
Days *d = new Days;
d.counter = 0;
如果我在主内这样的循环中使用d
do {
int num = rand()%900+1000;
d = add(d, num);
} while(user decides to continue}
delete d;
其中函数add
如下
Days *add(Days *d, int num) {
Days *temp2 = new Days;
temp2.counter = 0;
if (d.counter > 0)
temp2.counter = d.counter;
temp2.counter += num;
return temp2;
]
我需要在Do-while循环的每次迭代后删除d
吗?如果是这样,它会像这个一样在if statement
中的add
函数中吗
if (d.counter > 0) {
temp2.counter = d.counter;
delete d;
}
或者它主要是在循环中?
实际上,您不需要自己分配任何东西。
在主函数中,只需将变量声明为:
// Create a Days object with counter initialized to zero
Days d {0};
然后,您可以这样定义add
函数:
void add(Days & d, int num)
{
d.counter += num;
}
或者,如果你真的想使用指针而不是引用:
void add(Days * d, int num)
{
d->counter += num;
}
最后,你可以这样称呼它:
do
{
int num = whatever();
add(d, num);
// add(&d, num); if you used the pointer version
}
while(condition);
如果我可以给你一个建议,因为add()
应该对Days
对象进行操作,所以将其作为Days
的成员函数可能是有意义的,这样你就不需要传递Days
作为参数,也不需要去掉指针/引用的东西^^
在这种情况下,
add(d, num);
将变成:
d.add(num);