C++ C++;初学者-使用结构和常量有困难!

C++ C++;初学者-使用结构和常量有困难!,c++,class,struct,global-variables,C++,Class,Struct,Global Variables,我目前正在为一个大学项目进行一个简单的拼字游戏实现 但是我不能让它的一部分工作 看看这个: 我的董事会。h: 错误所在的子例程: //Following snippet contained in board.cpp //I believe the function is self-explanatory... //Pos is a struct containing a char, y, a int, x and an orientation, o, which is not //used

我目前正在为一个大学项目进行一个简单的拼字游戏实现

但是我不能让它的一部分工作

看看这个:

我的董事会。h:

错误所在的子例程:

//Following snippet contained in board.cpp
//I believe the function is self-explanatory...
//Pos is a struct containing a char, y, a int, x and an orientation, o, which is not   //used in this particular case
void Board::showBoard()
{
    Pos temp;
    temp.o = 0;

    for (temp.y = 'A'; temp.y < (65 + TOTAL_COLUMNS); ++temp.y)
    {
        for (temp.x = 1; temp-x < (1 + TOTAL_ROWS); ++temp.x)
        {
            cout << _matrix[temp].getContents();
        }
        cout << endl;
    }
}
//board.cpp中包含以下代码片段
//我相信这个功能是不言自明的。。。
//Pos是一个包含char、y、int、x和方向o的结构,在本例中不//使用
无效板::展示板()
{
Pos温度;
温度o=0;
对于(临时y='A';临时y<(65+总列);+临时y)
{
对于(温度x=1;温度x<(1+总行)++温度x)
{
库特
这些是预处理器定义,不能以分号结尾。分号将成为替换文本的一部分,因此编译器会看到类似
(65+15;)
的内容,这显然是错误的

在C++中,最好使用<代码> const 变量,而不是<代码>定义< <代码> >。在这种情况下,可以将以下内容放在<代码>板中。CPP >:

const unsigned int TOTAL_ROWS = 15;
const unsigned int TOTAL_COLUMNS = 15;
const unsigned int Board::TOTAL_ROWS = 15;
const unsigned int Board::TOTAL_COLUMNS = 15;
然后,您可以通过标题将它们放入
Board.h
,使它们可用:

extern const unsigned int TOTAL_ROWS;
extern const unsigned int TOTAL_COLUMNS;
更干净的做法是将他们声明为班级成员。将他们放入
Board.cpp

const unsigned int TOTAL_ROWS = 15;
const unsigned int TOTAL_COLUMNS = 15;
const unsigned int Board::TOTAL_ROWS = 15;
const unsigned int Board::TOTAL_COLUMNS = 15;
定义的
公共
部分的
Board.hpp
中:

static const unsigned int TOTAL_ROWS;
static const unsigned int TOTAL_COLUMNS;
它们必须是
static
,因为它们不属于任何特定的
Board
实例,而是类的整体属性。然后,您可以通过编写
Board::TOTAL_ROWS
等从
Board
类外部访问它们


这里的另一个问题是您正在创建
map
map
模板要求其键类型(
Pos
)具有有效的

这些是预处理器定义,不能以分号结尾。分号将成为替换文本的一部分,因此编译器会看到类似
(65+15;)
的内容,这显然是错误的

在C++中,最好使用<代码> const 变量,而不是<代码>定义< <代码> >。在这种情况下,可以将以下内容放在<代码>板中。CPP >:

const unsigned int TOTAL_ROWS = 15;
const unsigned int TOTAL_COLUMNS = 15;
const unsigned int Board::TOTAL_ROWS = 15;
const unsigned int Board::TOTAL_COLUMNS = 15;
然后,您可以通过标题将它们放入
Board.h
,使它们可用:

extern const unsigned int TOTAL_ROWS;
extern const unsigned int TOTAL_COLUMNS;
更干净的做法是将他们声明为班级成员。将他们放入
Board.cpp

const unsigned int TOTAL_ROWS = 15;
const unsigned int TOTAL_COLUMNS = 15;
const unsigned int Board::TOTAL_ROWS = 15;
const unsigned int Board::TOTAL_COLUMNS = 15;
定义的
公共
部分的
Board.hpp
中:

static const unsigned int TOTAL_ROWS;
static const unsigned int TOTAL_COLUMNS;
它们必须是
static
,因为它们不属于任何特定的
Board
实例,而是类的整体属性。然后,您可以通过编写
Board::TOTAL_ROWS
等从
Board
类外部访问它们



这里的另一个问题是您正在创建
map
map
模板要求其键类型(
Pos
)具有有效的
这些错误中的代码与您粘贴在此处的代码不匹配。
temp
是一个结构,但您试图将其作为数组索引传递?这些错误中的代码与您粘贴在此处的代码不匹配。
temp
是一个结构,但您试图将其作为数组索引传递?谢谢您的回答和建议。对不起,什么你的意思是“通过你的标题”?-----我的整个项目都以Pos类型为基础…对于这个特定类型,我如何重载?如果您需要从外部
Board.cpp
访问
TOTAL\u行
TOTAL\u列
,比如从
Main.cpp
或其他什么,那么您需要这些声明。如果您只在ide
Board.cpp
,您不必在标题中声明它们。谢谢,实际上还有另一个类需要这些常量。对不起,我忽略了您评论的第二部分。我添加了更多关于运算符重载技术的内容。谢谢您的回答和建议。对不起,“通过标题可用”是什么意思?-----我的整个项目都以Pos类型为基础…对于这个特定类型,我如何重载?如果您需要从外部
Board.cpp
访问
TOTAL\u行
TOTAL\u列
,比如从
Main.cpp
或其他什么,那么您需要这些声明。如果您只在ide
Board.cpp
,您不必在标题中声明它们。谢谢,实际上还有另一个类需要这些常量。很抱歉,我忽略了您评论的第二部分。我添加了更多关于运算符重载技术的内容。