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];
};