C++ c++;将动态数组传递给
我有这段代码,我试图将动态分配的数组spiel传递给Guess函数,但是我从g++C++ c++;将动态数组传递给,c++,C++,我有这段代码,我试图将动态分配的数组spiel传递给Guess函数,但是我从g++ error: invalid initialization of reference of type 'Player&' from expression of type 'Players*' Guess(*spiel, spiel->player); 我想既然new返回一个指针,我就不应该取消对数组的引用??请帮我找出我的错误方法 struct Game; struct Player; v
error: invalid initialization of reference of type 'Player&' from expression of type
'Players*'
Guess(*spiel, spiel->player);
我想既然new
返回一个指针,我就不应该取消对数组的引用??请帮我找出我的错误方法
struct Game;
struct Player;
void startGame(Game *game);
void Guess(Game &game, Player & player);
bool HasPlayers(Game &game);
void PlayerStats(Game &game);
void DestroyGame(Game *game);
struct Players{
string name;
int hits;
int misses;
int guesses;
char playing;
};
struct Game{
int running;
char level;
int numPlayers;
Players *player;
})
intmain()
{
Game*spiel=新结构游戏();
spiel->player=新玩家[spiel->numPlayers];
cout player);你的前向声明类型是player
,但是,你的具体类型是Players
更新:
struct Player;
void Guess(Game &game, Player & player);
到
或者相应地将所有Player
更改为Player
另外,Guess
只将一个Player
作为输入,但是spiel->Player
是用一个Player数组初始化的,因此类型不匹配。但是,您可以将单个Player对象传入:
Guess(*speil, spiel->player[0]);
或者您可以更改Guess
函数签名,以接受玩家的数组
,正如@billz提到的,Guess函数中的Player
拼写错误更改为玩家
重要的是,您是Guess
函数接受对玩家的引用
因此,您应该像Guess(*speil,*(speil->player))
那样调用
而且,numPlayers
未初始化这可能很危险。你需要实际的对象,而不是传递指针本身。相反,传递&speil->player或*speil->player。这取决于你的编译器。你还需要更改你的Guess()函数定义(类型拼写不一样).对不起,我弄错了。我编辑了Guess的第二个参数是对播放器的引用,因此您应该传递对象,即Guess(*speil,*(speil->Player))
@UchiaItachi非常感谢。程序已编译。因此,这至少是一个障碍。
struct Players;
void Guess(Game &game, Players & player);
Guess(*speil, spiel->player[0]);