C++ 结构向量的值意外更改
我有一个奇怪的问题。有一个结构向量。对于一个临时结构,我将_推回结构向量。但是当我检查第一个成员的C++ 结构向量的值意外更改,c++,structure,stdvector,C++,Structure,Stdvector,我有一个奇怪的问题。有一个结构向量。对于一个临时结构,我将_推回结构向量。但是当我检查第一个成员的cnt时,我发现它变了。有什么想法吗?(以下代码为简化版,但具有代表性) 结构向量 { 浮动*暗淡; 向量() { dim=新浮动[3]; } }; 结构面 { 漂浮,漂浮; int P,N; 向量Af; 浮动广告; 载体碳纳米管; 浮动ifac; 浮动mf; }; 向量面; 面部温度; 对于(;;) { 温度面中心尺寸[0]=0.f; 温度面中心尺寸[1]=0.f; 温度面中心尺寸[2]=0.f;
cnt
时,我发现它变了。有什么想法吗?(以下代码为简化版,但具有代表性)
结构向量
{
浮动*暗淡;
向量()
{
dim=新浮动[3];
}
};
结构面
{
漂浮,漂浮;
int P,N;
向量Af;
浮动广告;
载体碳纳米管;
浮动ifac;
浮动mf;
};
向量面;
面部温度;
对于(;;)
{
温度面中心尺寸[0]=0.f;
温度面中心尺寸[1]=0.f;
温度面中心尺寸[2]=0.f;
对于(int q=0;q编译器生成的默认复制构造函数(和赋值运算符)用于
向量
和面
(但最重要的是向量
)。当代码重新使用名为temp\u Face
的Face
的同一实例时,向量Face
中Face
的所有Face
实例都指向相同的Face.cnt.dim
数组(因为faces
将包含temp\u Face
的副本)
我看不出在Vector
中动态分配数组的任何原因,因为它是固定大小的。建议更改为:
struct Vector
{
float dim[3];
};
或者您需要为向量
实现复制构造函数、赋值运算符和析构函数。
有关更多信息,请参阅。每次我是否应该在for循环中创建一个新的
temp\u面
?@Shibli,不。您需要修复Vector
。我按照您所说的修复了Vector,虽然我仍然不了解潜在的问题,但它仍然有效。非常感谢您!
struct Vector
{
float dim[3];
};