c++ - 结构错误 "uninitialized reference member"

标签 c++ struct

我是菜鸟,尤其是在 C++ 方面。

我在使用我想在某些函数中使用的结构时遇到了一些问题。

我在这里查看了有关头文件和 .cpp 中的结构的其他答案,但并没有真正让它发挥作用。

我的 .h 文件:

namespace game {

class CPlayer{

        struct GameData{
        int mBoard[8][8];
        CBoard &pBoard;
    };
public:

    CMove Play(const CBoard &pBoard,const CDeadline &pDue);

private:

    int GainsFromMoves(struct GameData gameData);

等.....

然后在我的 .cc 文件中,我尝试将此数据用于:

CMove CPlayer::Play(const CBoard &pBoard,const CDeadline &pDue)
{

     GameData gameData;

     gameData.pBoard = pBoard;

等...

在我尝试声明 GameData 时出现错误 uninitialized reference member in ‘struct game::CPlayer::GameData’

稍后尝试使用 GainsFromMoves 函数时,我也遇到了一些错误。

int GainsFromMoves(GameData gameData){

 int test = 0;

 return test;
}

error: Multiple markers at this line
    - expected ‘,’ or ‘;’ before ‘{’ token
    - ‘GameData’ was not declared in this 
     scope

我意识到我可能犯了一些非常菜鸟的错误,但我很乐意提供一些指导。

最佳答案

好的,首先,您需要声明CMoveCBoardCDeadline。我添加了一些虚拟的以解决其他问题:

namespace game {

struct CBoard {};
struct CDeadline {};
struct CMove {};
...

然后,你的结构体 CPlayer::GameData 需要初始化它的 CBoard 引用,它应该是 const:

class CPlayer{

        struct GameData
        {
          GameData(const CBoard& board) : pBoard(board) {}
          int mBoard[8][8];
          const CBoard &pBoard;
        };
public:
    CMove Play(const CBoard &pBoard,const CDeadline &pDue);
private:
    int GainsFromMoves(struct GameData gameData);
};

接下来,在你的.cc文件中,定义成员函数时需要命名空间和类名:

namespace game
{
CMove CPlayer::Play(const CBoard &pBoard,const CDeadline &pDue)
{
     GameData gameData(pBoard);
     return CMove();
}
int CPlayer::GainsFromMoves(GameData gameData){

  int test = 0;

 return test;
}

} // namespace game

这消除了错误,至少对于这个简单的 main:

int main()
{
  game::CBoard b;
  game::CDeadline d;
  game::CPlayer p;
  p.Play(b, d);
}

关于c++ - 结构错误 "uninitialized reference member",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382748/

相关文章:

C 错误 : array type has incomplete element type

c++ - 使用 EIGEN 库填充动态 vector

c++ - 处理 float 不准确

C++ Map插入具有重复键的对

c - 未初始化时结构中的值是什么?

通过 typedefs 的 C11 匿名结构?

C 代码神秘地改变结构的值(有趣的神秘代码行为)

c++ - 多个连接更新同一个表

c++ - 如何在不复制的情况下从 N 维容器中获取可迭代范围?

c++ - 传递结构数组时遇到问题