我是这个网站的新手,但我无法在这里找到解决我问题的解决方案。我试图和我的朋友一起参与游戏,我想知道是否有人可以帮助我们朝着正确的方向前进。当我们尝试编译&#34时,我们收到此错误消息;无法将'WonderT'转换为'WonderT *'以用于参数'1'和#34;。如果有人可以提供帮助,我真的很感激。
void WonderSelect(Player&, int, WonderT[]);
WonderT wonders[MAX_WONDER_COUNT];
Player player1, player2;
void WonderSelect(Player& players, int wonderCount, WonderT wonders[]) {
players.SetPick(rand() % wonderCount);
PrintWonders(wonders[players.GetPick()]);
return;
}
编辑:这是我的PrintWonders功能
void PrintWonders(WonderT allWonders[], int count) {
int i;
for(i=0;i<count;i++) {
cout << "Wonder " << i << endl;
PrintWonder(allWonders[i]);
}
return;
}
答案 0 :(得分:1)
PrintWonders()
(注意复数)需要一组WonderT
个对象。它将遍历数组,将每个对象传递给PrintWonder()
(注意单数)。
您的代码失败是因为您从数组中选择一个随机对象并将其传递给PrintWonders()
(复数),而应将其传递给PrintWonder()
(单数):
void WonderSelect(Player& players, int wonderCount, WonderT wonders[]) {
players.SetPick(rand() % wonderCount);
// PrintWonders(wonders[players.GetPick()]); // <-- ERROR!
PrintWonder(wonders[players.GetPick()]); // <-- OK!
return;
}
如果你想用一个对象作为输入来调用PrintWonders()
(复数),请改为调用它:
void WonderSelect(Player& players, int wonderCount, WonderT wonders[]) {
players.SetPick(rand() % wonderCount);
PrintWonders(&wonders[players.GetPick()], 1); // <-- OK!
return;
}