C++ 为变量赋值后获取垃圾值,can';我不明白为什么
我正在创建一个类“Dynamic”(未显示)的新对象,它继承自“Organic”,继承自“Being”某些参数,如id、biomeRow等 有机有:特征(结构)、最大繁殖、总繁殖、年龄(数组)和当前年龄 问题是:在创建动态对象时,除了max\u spawn\u之外,所有值都设置得恰到好处。我在创建Dynamic之前,在创建Dynamic和为输入值创建Organic之前都做过printfs,它们都是正确的 Features struct正确,total_spawn正确,age_dur_数组和current_age也正确 所有这些都是我要求的,除了max_spawn_。maxpawn是我传递的值(20),max_spawn_uu应该是20,但它不是。我所有的printfs和调试控制台都显示它大约是-858993460。我猜那只是垃圾,但我不知道当我所做的只是:C++ 为变量赋值后获取垃圾值,can';我不明白为什么,c++,C++,我正在创建一个类“Dynamic”(未显示)的新对象,它继承自“Organic”,继承自“Being”某些参数,如id、biomeRow等 有机有:特征(结构)、最大繁殖、总繁殖、年龄(数组)和当前年龄 问题是:在创建动态对象时,除了max\u spawn\u之外,所有值都设置得恰到好处。我在创建Dynamic之前,在创建Dynamic和为输入值创建Organic之前都做过printfs,它们都是正确的 Features struct正确,total_spawn正确,age_dur_数组和cur
max_spawn_ = maxSpawn;
这就是我的功能:
Organic::Organic(int id, int biomeRow, int biomeColumn, int biomeType, int beingType,
int object, Features features, int maxSpawn, int totalSpawn,
int age_dur[5], int current_age)
: Being(id, biomeRow, biomeColumn, biomeType, beingType, object)
{
features_ = features;
max_spawn_ = maxSpawn;
total_spawn_ = totalSpawn;
age_ = current_age;
for (int i = 0; i <= 5; i++)
age_dur_[i] = age_dur[i];
printf("\n%d\n", max_spawn_);
}
Organic::Organic(int-id、int-biomeRow、int-biomeColumn、int-biomeType、int-beingType、,
int对象、功能、int maxpawn、int totalSpawn、,
int age_dur[5],int current_age)
:Being(id、biomeRow、biomeColumn、biomeType、beingType、object)
{
特征=特征;
最大产卵量=最大产卵量;
总产卵量=总产卵量;
年龄=当前年龄;
对于(int i=0;iage\u dur
(大概是age\u dur
)是int[5]
数组。如下复制:
for (int i = 0; i <= 5; i++)
age_dur_[i] = age_dur[i];
以十六进制输出值,是吗?无论如何,您的成员和参数的命名方式非常糟糕。同样相关:,也可能是:Organic::Organic()调用中的某个内容
?由于代码的这一部分没有包括在内,很难猜测,但是那里可能会出错。查看您的实际类定义会很有趣。max\u spawn\uuu
是否接近age\u dur\uuu
?如果它是int[5]
,您正在超限age\u dur\uu
。(您的循环应该有i<5
作为其条件,而不是i使用所有警告和调试信息(例如g++-Wall-Wextra-g
)编译。请特别使用调试器(gdb
)watchpoints@Paul鲁布:谢谢!这正是问题所在。马克斯·斯沃恩在阿格·杜尔旁边,我没有注意到
for (int i = 0; i < 5; i++)
age_dur_[i] = age_dur[i];