カードゲームの中身を先に作ろうと思っているのですが、わからないところがあるので質問させてください。
//Source.cpp
#include"Header.h"
#include"Player.h"
int main()
{
cPlayer p;
cCard* test1 = new cTEST1;
p.Add(test1);
printf("%d", p.deck[0]->hp);
delete test1;
return 0;
}
//Header.h
#include<stdio.h>
#include<Windows.h>
#include<vector>
using namespace std;
class cCard
{
public:
cCard() { hp = 1; }
int hp;
};
class cTEST1 :public cCard
{
public:
cTEST1() : cCard() { this->hp = 10; }
};
//Player.h
class cPlayer
{
public:
vector<cCard*>deck;// ここにカード突っ込みたい。
virtual ~cPlayer();// 解放処理
template<typename T>
void Add(T*);
};
// 仮なのでここに記述しています。
template<typename T>
void cPlayer::Add(T* _card)
{// ここが問題点。Tの中身をcCardからcTEST1にしたい。
deck.push_back(new T);
}
これをcTEST1が中身に入るようにするにはどうすればいいのでしょうか?
ご協力お願いします。