gpt4 book ai didi

c++ - 指向 void* 的类指针

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:25 25 4
gpt4 key购买 nike

我正在和类(class)一起制作角色扮演游戏我用存储实例的 ActionList* 创建了一个结构调用字符。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;
};

我试图将 GeneralPlayer* 转换为 void*。但是似乎代码并不像我想的那样工作。 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。我希望任何人都可以帮助解决我的问题,谢谢。

最佳答案

您正在尝试将对象转换为指针,请使用 & 运算符获取相关指针。

ActionList[i] = (void*)&P[i];
ActionList[i] = (void*)&M[i];

关于c++ - 指向 void* 的类指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com