程序未完成返回值3221225477没有编译器错误
Program don't complete returns value 3221225477 no compiler errors
你好,我是C ++编程的新手,我已经写了这段代码
#include <iostream>
#include <string>
using namespace std;
class Weapon
{
string weaponName;
public:
Weapon(string n)
{
weaponName=n;
cout<<"Weapon created"<<endl;
};
~Weapon()
{
cout<<"Weapon destroyed"<<endl;
};
//getter
string getWeaponName()
{
return weaponName;
};
//setter
string setWeaponName(string name2)
{
weaponName=name2;
};
};
class Samurai
{
string samuraiWeapon;
string name;
int age;
int numberOfWins;
int numberOfInjuries;
int numberOfDuels;
public:
Samurai(string t,int w,int i,int d,int a)
{
name=t;
numberOfWins=w;
numberOfInjuries=i;
numberOfDuels=d;
age=a;
samuraiWeapon="no weapon";
cout <<"Samurai ready for duel."<<endl;
};
~Samurai()
{
cout<<"Samurai " << name <<" deleted "<<endl;
};
void printSamuraiDescription()
{
cout<<"Samurai name: "<< name <<" Duels: "<<numberOfDuels<<" Wins: "<<numberOfWins<<" Injuries: "<<numberOfInjuries<<endl;
};
void pickWeapon(Weapon &a)
{
if (age<18)
{
setSamuraiWeapon("Wooden Sword");
cout<<samuraiWeapon<<endl;
}
else
{
setSamuraiWeapon(a.getWeaponName());
cout<<samuraiWeapon<<endl;
}
}
//getters
string getName()
{
return name;
};
string getSamuraiWeapon()
{
return samuraiWeapon;
};
int getnumberOfWins()
{
return numberOfWins;
};
int getnumberOfInjuries()
{
return numberOfInjuries;
};
int getnumberOfDuels()
{
return numberOfDuels;
};
int getAge()
{
return age;
};
//setters
string setName(string a)
{
name=a;
};
string setSamuraiWeapon(string e)
{
samuraiWeapon=e;
};
int setnumberOfWins(int b)
{
numberOfWins=b;
};
int setnumberOfInjuries(int c)
{
numberOfInjuries=c;
};
int setnumberOfDuels(int d)
{
numberOfDuels=d;
};
int setAge(int f)
{
age=f;
};
//friend fuction
friend void duel(Samurai &a, Samurai &b, bool winner);
friend string duelForYoungSamurais(Samurai &a, Samurai &b);
};
string duelForYoungSamurais(Samurai &a, Samurai &b)
{
if (a.age>18 || b.age>18)
{
cout<<"Invalid duel"<<endl;
}
if (a.samuraiWeapon!="Wooden Sword" || b.samuraiWeapon!="Wooden Sword")
{
cout<<"Duel postponed"<<endl;
}
else
{
cout<<a.getName()<<" duels "<<b.getName()<<endl;
}
}
void duel(Samurai &a, Samurai &b, bool winner)
{
a.setnumberOfDuels(a.numberOfWins+1);
b.setnumberOfDuels(b.numberOfWins+1);
if (winner==true)
{
cout<<"Samurai a is winner "<<endl;
a.setnumberOfWins(a.numberOfWins+1);
b.setnumberOfInjuries(b.numberOfInjuries+1);
if(a.numberOfWins>=10) cout<<"Samurai a is duelist"<<endl;
}
else
{
cout<<"Samurai b is winner "<<endl;
b.setnumberOfWins(b.numberOfWins+1);
a.setnumberOfInjuries(a.numberOfInjuries+1);
if(b.numberOfWins>=10) cout<<"Samurai b is duelist"<<endl;
}
}
int main()
{
Samurai a("Giorgos",9,0,0,18);
Samurai b("Giannis",1,2,3,13);
Weapon a1("Rock");
a.pickWeapon(a1);
b.pickWeapon(a1);
duelForYoungSamurais(a,b);
duel(a,b,true);
a.printSamuraiDescription();
b.printSamuraiDescription();
}
程序编译没有错误,但是当它启动并运行时,它会停止并在几秒钟内结束而不做我想做的事并返回3221225477如果我在注释中输入与 Weapon 类和 pickWeapon 和决斗有关的部分,我的代码运行得很好
在这里,我更正了所有返回类型不是 void
的 setter,现在它可以工作了:
#include <iostream>
#include <string>
using namespace std;
class Weapon
{
string weaponName;
public:
Weapon(string n)
{
weaponName=n;
cout<<"Weapon created"<<endl;
}
~Weapon()
{
cout<<"Weapon destroyed"<<endl;
}
//getter
string getWeaponName()
{
return weaponName;
}
//setter
void setWeaponName(string name2)
{
weaponName=name2;
}
};
class Samurai
{
string samuraiWeapon;
string name;
int age;
int numberOfWins;
int numberOfInjuries;
int numberOfDuels;
public:
Samurai(string t,int w,int i,int d,int a)
{
name=t;
numberOfWins=w;
numberOfInjuries=i;
numberOfDuels=d;
age=a;
samuraiWeapon="no weapon";
cout <<"Samurai ready for duel."<<endl;
};
~Samurai()
{
cout<<"Samurai " << name <<" deleted "<<endl;
}
void printSamuraiDescription()
{
cout<<"Samurai name: "<< name <<" Duels: "<<numberOfDuels<<" Wins: "<<numberOfWins<<" Injuries: "<<numberOfInjuries<<endl;
}
void pickWeapon(Weapon &a)
{
if (age<18)
{
setSamuraiWeapon("Wooden Sword");
cout<<samuraiWeapon<<endl;
}
else
{
setSamuraiWeapon(a.getWeaponName());
cout<<samuraiWeapon<<endl;
}
}
//getters
string getName()
{
return name;
}
string getSamuraiWeapon()
{
return samuraiWeapon;
}
int getnumberOfWins()
{
return numberOfWins;
}
int getnumberOfInjuries()
{
return numberOfInjuries;
}
int getnumberOfDuels()
{
return numberOfDuels;
}
int getAge()
{
return age;
}
//setters
void setName(string a)
{
name=a;
}
void setSamuraiWeapon(string e)
{
samuraiWeapon=e;
}
void setnumberOfWins(int b)
{
numberOfWins=b;
}
void setnumberOfInjuries(int c)
{
numberOfInjuries=c;
}
void setnumberOfDuels(int d)
{
numberOfDuels=d;
}
void setAge(int f)
{
age=f;
}
//friend fuction
friend void duel(Samurai &a, Samurai &b, bool winner);
friend void duelForYoungSamurais(Samurai &a, Samurai &b);
};
void duelForYoungSamurais(Samurai &a, Samurai &b)
{
if (a.age>18 || b.age>18)
{
cout<<"Invalid duel"<<endl;
}
if (a.samuraiWeapon!="Wooden Sword" || b.samuraiWeapon!="Wooden Sword")
{
cout<<"Duel postponed"<<endl;
}
else
{
cout<<a.getName()<<" duels "<<b.getName()<<endl;
}
}
void duel(Samurai &a, Samurai &b, bool winner)
{
a.setnumberOfDuels(a.numberOfWins+1);
b.setnumberOfDuels(b.numberOfWins+1);
if (winner==true)
{
cout<<"Samurai a is winner "<<endl;
a.setnumberOfWins(a.numberOfWins+1);
b.setnumberOfInjuries(b.numberOfInjuries+1);
if(a.numberOfWins>=10) cout<<"Samurai a is duelist"<<endl;
}
else
{
cout<<"Samurai b is winner "<<endl;
b.setnumberOfWins(b.numberOfWins+1);
a.setnumberOfInjuries(a.numberOfInjuries+1);
if(b.numberOfWins>=10) cout<<"Samurai b is duelist"<<endl;
}
}
int main()
{
Samurai a("Giorgos",9,0,0,18);
Samurai b("Giannis",1,2,3,13);
Weapon a1("Rock");
a.pickWeapon(a1);
b.pickWeapon(a1);
duelForYoungSamurais(a,b);
duel(a,b,true);
a.printSamuraiDescription();
b.printSamuraiDescription();
}
相关文章:
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 重载方法的方式会在使用临时调用时生成编译器错误
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 编译器错误:destuctor 的更宽松的抛出说明符
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- C++ G++ 编译器 - 错误:隐式声明的定义
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- 模板模板参数和模板别名:编译器错误?
- C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
- 在gcc中意外调用了Const重载.编译器错误或兼容性修复程序
- C1001内部编译器错误是由于矢量初始化(如数组)引起的
- 编译器错误(英特尔并行工作室 2019 与 Visual Studio 社区 2019)
- 如何在C++中克服此 C4430 编译器错误?
- 尝试使用 WinBGI 显示文本时出现编译器错误
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- C++自定义分配器大小参数作为模板参数会引发编译器错误