Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;将动态数组传递给_C++ - Fatal编程技术网

C++ c++;将动态数组传递给

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

我有这段代码,我试图将动态分配的数组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;

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]);