!我正在制作一个枪模板,它应该是这样的:
template <Bullet>
class gun
{
};
Bullet是一个将在其他文件中定义的类,我的问题是我如何在枪中使用这个子弹作为一种类型?我如何在其他类中使用类作为模板?我想要一点点解释! 感谢...!
这是我试图做的事情:
#include "Bullet.h"
#include <iostream>
using namespace std;
#define BulletWeapon1 100
#define BulletWeapon2 30
#define BulletWeapon3 50
enum Weapons
{
Gun1,Gun2,Gun3
}CurrentWeapon;
template <class T=Bullet>
class Gun
{
};
int main()
{
return 0;
}
答案 0 :(得分:0)
如果您只需要Bullet
内的gun
课程,那么您就可以不使用模板:
class gun {
Bullet x;
// ...
};
否则,如果您想允许任何类但提供默认类Bullet
,您可以使用:
template <class T = Bullet>
class gun {
T x;
// ...
};
特别是,如果您想确保T
始终是Bullet
的基类,您可以使用类型特征,例如{{3} }和std::enable_if
。
在旁注中,请尽量避免使用using namespace std;
之类的语句,而是开始习惯使用std::
前缀。当您遇到多个定义或奇怪的查找问题时,它会为您省去一些麻烦。
另外,尽量避免使用#define
。这样:
#define BulletWeapon1 100
#define BulletWeapon2 30
#define BulletWeapon3 50
可以转换为:
const int BulletWeapon1 = 100;
const int BulletWeapon2 = 30;
const int BulletWeapon3 = 50;
最后请注意,在C ++ 11中,您可以使用enum class
es,它比简单enum
更安全类型:
enum Weapons { Gun1,Gun2,Gun3 } CurrentWeapon;
可以成为:
enum class Weapons { Gun1, Gun2, Gun3 } CurrentWeapon = Weapons::Gun1;