gpt4 book ai didi

c++ - 赋值运算符,使用动态数组

转载 作者:行者123 更新时间:2023-11-28 03:37:42 25 4
gpt4 key购买 nike

我有一个指向对象的指针列表。我想要做的是读取列表并将每个对象存储在该对象类型的动态数组中。所以我这样做:

int size = List.size();  // find how many objects in the list
ClassA* object = new ClassA[size]; // create a dynamic array
int counter = 0;
p = List.begin(); // iterator = begining of the list
while( p != List.end() )
{
object[counter] = (*p)->operator=(*(*p));
// called like this as this function is in a separate class
p++;
counter++;
}

这似乎是我想要的,这意味着我需要赋值运算符,但我对放入其中的内容有点困惑,而且我收到堆栈溢出错误,这是我认为我需要做的:

 ClassA ClassA::operator =(const ClassA& source)
{
ClassA* newObject;
newObject = new ClassA;
newObject = source;
return newObject;

}

这是一大堆废话我没有,但在我的脑海里这是我想要它做的,但我不完全理解我是如何实现它的。

如果有人可以帮助或建议更好的方法来实现我的需要,我们将不胜感激。

这样做的原因是存储在此列表中的对象通常在每个帧中迭代并复制到一个临时对象中。但是列表在程序运行期间不会改变,这意味着我不需要复制每一帧,只需要在开始时复制一次。而且我需要一个动态数组,因为我不知道列表中将存储多少对象。

最佳答案

这可能是一个 operator= 实现:

ClassA &ClassA::operator =(const ClassA& source) {
// check for self-assignment
if(this != &source) {
// copy instance variables.
a = source.a; // for example...
}
// assignment always returns the lvalue
return *this;
}

我不知道你的ClassA的实例变量,所以你应该实现内部复制。

另一方面,当迭代你的列表时,你可以这样复制对象:

object[counter] = (**p);

(**p) 返回,首先是存储在迭代器中的指针,然后取消引用它。

关于c++ - 赋值运算符,使用动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com