如何解决在结构实例的向量上失去指针,而在结构实例中失去指针
|| 不知道标题是否正确,但是可以这样: 例如,如果我具有以下结构:struct strA{
int x;
strA(int x);
}
strA::strA(int x){
this->x = x;
}
还有一个使用指向前一个指针的结构:
#include strA
struct strB{
int y;
strA *var_strA;
strB(int y);
~strB(){
delete var_strA;
}
};
strB::strB(int y){
this->y = y;
var_strA = new strA(123);
}
然后,如果我从主要应用中得出strB项的向量:
std::vector<strB> vectB;
main(){
strB *itemB = new strB(456);
vectB.push_back(*itemB);
delete itemB;
//more code
}
如果我尝试访问向量中项目上的var_strA,则为空。而且,由于析构函数试图再次删除var_strA,因此删除矢量上的项目时也会出现错误。
来自Java ...我真的迷失了该死的指针。
提前致谢
解决方法
您需要在该指针保持类型上使用一个复制构造函数和一个复制赋值运算符,即遵循三个规则。这里有关于SO的大量资源:什么是三法则?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。