gpt4 book ai didi

c++ - 指针深拷贝的 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:16 24 4
gpt4 key购买 nike

我是一个非常新的程序员,也是一个 super 初学者,所以我对 C++ 了解不多。我有一个关于制作指针的深层拷贝的问题。我拥有的是一个充满 POD 的 A 类和一个指向此类的指针 (A *P)。我有第二个 B 类,其中包含一些其他 POD 和指向 A 类的指针 vector 。我想用 A *P 的深层拷贝填充这个 vector ,因为在一个循环中我将动态分配和释放它。以下不起作用。我相信它是我的复制构造函数和 = 运算符的重载。这是我为了乐趣和学习而做的事情。

class A
{
public:
.....
.....
.....
};

class B
{
public:
B();
~B();
B(const B &Copier);
B& B::operator=(const B &Overloading);
vector<A*> My_Container;
A* Points_a_lot;
int counter;
};
B::B()
{
counter=0;
Points_a_lot=NULL;
}
B::~B()
{
for(size_t i=0; i<My_Container.size(); i++)
{
delete My_Container[i];
}
}
B::B(const B &Overloading)
{
My_Container[counter]=new A(*Overloading.Points_a_lot);
}
B& B::operator=(const B &Overloading)
{
if(!Overloading.My_Container.empty())
{
Overloading.My_Container[counter]=new B(*Overloading.Points_a_lot);
}
return *this;
}
int main()
{ A* p=NULL;
B Alphabet;
for(....)
{
p=new A;
//some stuff example p->Member_of_A=3; etc..
Alphabet.My_Container[Alphabet.counter]=p;
Alphabet.counter++;
delete p;
}
return 0;
}

任何帮助都会很棒。我感谢你的时间。假设包含所需的库。

最佳答案

好的,在我看来,您对 operator= 应该做什么感到很困惑。在 operator overloading 上查看此页面.这应该可以让您开始正确地执行该功能。

其次,与您的问题无关,请查看 this question为什么你的字段(成员变量,你有什么)应该是私有(private)的。

关于c++ - 指针深拷贝的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085121/

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