C++ C++;初学者-使用结构和常量有困难!
我目前正在为一个大学项目进行一个简单的拼字游戏实现 但是我不能让它的一部分工作 看看这个: 我的董事会。h: 错误所在的子例程: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
//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
或其他什么,那么您需要这些声明。如果您只在ideBoard.cpp
,您不必在标题中声明它们。谢谢,实际上还有另一个类需要这些常量。对不起,我忽略了您评论的第二部分。我添加了更多关于运算符重载技术的内容。谢谢您的回答和建议。对不起,“通过标题可用”是什么意思?-----我的整个项目都以Pos类型为基础…对于这个特定类型,我如何重载?如果您需要从外部Board.cpp
访问TOTAL\u行
和TOTAL\u列
,比如从Main.cpp
或其他什么,那么您需要这些声明。如果您只在ideBoard.cpp
,您不必在标题中声明它们。谢谢,实际上还有另一个类需要这些常量。很抱歉,我忽略了您评论的第二部分。我添加了更多关于运算符重载技术的内容。