【问题标题】:Error: ‘board’ was not declared in this scope (C++)错误:未在此范围内声明“板”(C++)
【发布时间】:2020-11-24 08:07:29
【问题描述】:

我正在为棋盘游戏编写代码并尝试对其进行测试。

我不知道如何解决这个给出消息的错误:

错误:“板”未在此范围内声明”。

此消息出现在第 9 行。非常感谢您的帮助。

#include <iostream>
#include "Board.h"

using namespace std;

int main()
{
    Board B;
    B.Player1(*board[15][15], B.pathP1[57]);
    B.printBoard();
}

void Board::Player1(char *board[15][15], char pathP1[57])
{ 

Board.h 在下面

#ifndef BOARD_H
#define BOARD_H

struct Board
{
  //Board board();
  char *board[15][15];
  char pathP1[57];
  
  void Player1(char *board[15][15], char pathP1[57]);
  void printBoard();
};
#endif //BOARD_H

【问题讨论】:

  • 请提供minimal reproducible example。它当然必须包括标题。此外,“第 9 行”不是有用的参考。请使用评论来识别它/* error here */
  • 请同时发布 Board.h!
  • 我认为你需要在你最喜欢的 C++ 书籍中阅读更多关于变量、范围、数组、类和成员变量的信息。
  • 至少需要看到board.h的内容。看起来您对如何将数组传递给函数有常见的新手困惑。加上新手对对象如何工作的常见误解。
  • 它可能在这里抱怨这个:“*board[15][15]”。我不是编译器,但是这个变量是在哪里声明的呢?

标签: c++


【解决方案1】:

所以你对对象的工作方式有一个误解。无需将成员变量传递给成员函数,因为成员函数可以自动访问成员变量。这是面向对象编程的主要特征之一(至少在 C++ 中)。

像这样重写你的代码

struct Board
{
  //Board board();
  char *board[15][15];
  char pathP1[57];
  
  void Player1();
  void printBoard();
};

int main()
{
    Board B;
    B.Player1();
    B.printBoard();
}

void Board::Player1()
{
    // do something with board and pathP1
    ...
}

此外,您还需要修改数组和函数的工作方式。尽管您不需要将 boardpathP1 数组传递给 Player1 方法,但您尝试这样做的方式也是不正确的。

【讨论】:

  • 谢谢您的帮助,非常感谢。我仍在编写程序,似乎还有更远的路要走。
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多