我有一些非常简单的 C++ 代码来说明问题。我用构造函数中的值初始化我的数组。但是当我尝试访问 main 中的数组时,这些值被替换为随机数。为什么?
//Example to figure out why initialization values are disappearing
#include <iostream>
struct Struct1
{
float array1[2];
//ctor
Struct1();
};
Struct1::Struct1()
{
float array1[] = {0.2,1.3};
}
int main()
{
Struct1 StructEx;
std::cout<<StructEx.array1[0]<<' ';
std::cout<<StructEx.array1[1]<<std::endl;
return 0;
}
最佳答案
正如@crashmstr 提到的,您没有初始化结构的成员,而是一个局部变量。以下代码应该可以工作:
struct Struct1
{
float array1[2];
//ctor
Struct1();
};
Struct1::Struct1()
: array1 ({0.2,1.3})
{
}
int main()
{
Struct1 StructEx;
std::cout<<StructEx.array1[0]<<' ';
std::cout<<StructEx.array1[1]<<std::endl;
return 0;
}
关于c++ - 数组不保存初始化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45444546/