私はクラス のrpgゲームで作業しています。インスタンスを格納するActionList *を持つ構造体呼び出しCharacterを作成しました。 GeneralPlayerは、他のプレーヤークラスが継承されているクラスです。 これは私のヘッダファイルです:私はvoid *にGeneralPlayer *を変換しようとしていたクラスへのポインタ*
class Battle
{
public:
struct Character
{
char type;//monster or player?
bool alive;
void*instance;//pointer to instance
};
Battle(GeneralPlayer*,AbstractMonster*,int,int,int);
Battle(GeneralPlayer*, AbstractMonster*, int, int);
private:
Character *ActionList;
};
。しかし、コードは私が思ったように動作しないようです。 PおよびMは、それらのプレーヤクラスのポインタの配列である。
Battle::Battle(GeneralPlayer*P, AbstractMonster*M, int a, int b, int c)
{
a = numP;
b = numM;
c = turn_limit;
ActionList = new Character[numP + numM];
P = new GeneralPlayer[numP];
for (int i = 0; i < numP; i++)
{
ActionList[i] = static_cast<void*>(P[i]);
ActionList[i].type = 'p';
}
for (int i = numP; i < numP+numM; i++)
{
ActionList[i] = static_cast<void*>(M[i]);
ActionList[i].type = 'm';
}
}
エラーC2440が表示され続けます。誰もが私の問題を解決することができれば幸いです。
'P [i]'は 'GeneralPlayer *'ではなく 'GeneralPlayer'です。 – songyuanyao
関数を呼び出した後、 'P'として渡した変数は初期化されていないようですか?詳しくは試してみてください。そして、私たちに示すために、[最小、完全で、かつ実証可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。 –
@songyuanyao申し訳ありません私はまだ初心者です。 P [i]がGeneralPlayer *でない場合は、どうすればよいでしょうか? –