C++ C++;派生类构造函数问题
我的构造函数有一些问题,因为由于某些原因,目前只有基本构造函数被使用,我的多参数构造函数没有被使用。“生物”是我的抽象祖父母类,而“战斗者”是从“生物”派生的,而“地精”是从“战斗者”派生的C++ C++;派生类构造函数问题,c++,constructor,C++,Constructor,我的构造函数有一些问题,因为由于某些原因,目前只有基本构造函数被使用,我的多参数构造函数没有被使用。“生物”是我的抽象祖父母类,而“战斗者”是从“生物”派生的,而“地精”是从“战斗者”派生的 combatant fighter_1; combatant fighter_2; do { cout << "Please pick the first combatant, enter 1 for a Goblin, \n"; cout << "enter 2 f
combatant fighter_1;
combatant fighter_2;
do
{
cout << "Please pick the first combatant, enter 1 for a Goblin, \n";
cout << "enter 2 for a Barbarian, enter 3 for a Reptile person, \n" ;
cout << "enter 4 for a Blue Men, enter 5 for a Beserker, \n";
cout << "enter 6 for a hobbit. \n";
cin >> pick;
checker=pick;
if (cin.fail()||checker!=pick||pick<1||pick>6)
{
cout << "You have entered an invalid input.\n";
cin.clear();
cin.ignore(100, '\n');
pick=-1;
}
}
while (checker!=pick||pick<1||pick>6); //makes sure number entered is valid
if (pick==1)
{
goblin fighter_1("Goblin",6,6,0,6,0,0,3,8);
}
通常,当
if
正文中的单个语句未执行时(正如您报告的情况),这是由于if
条件不为true
我从几个月前开始学习这段代码,并意识到我没有使用最新版本
fighter_1 = goblin("Goblin",6,6,0,6,0,0,3,8);
您应该为此使用指针和内存分配。最好是
std::shared_ptr
。仅供参考:地精战斗机1(“地精”,6,6,0,6,0,0,3,8)
不会神奇地将外部范围内的战斗机_1
变成地精。它所做的一切都是用一个隐藏外部的名字在本地构建一个,然后立即将其丢弃。战斗战斗机1的中没有任何变化。如果你想证明If块没有执行,那么这个变量没有变化,它就不是这样的(证明)。我从几个月前开始学习这段代码,意识到我没有脱离最新版本,我应该把它命名为fighter_1=goblin(“goblin”,6,6,0,6,0,0,3,8);该赋值导致切片。
fighter_1 = goblin("Goblin",6,6,0,6,0,0,3,8);