嗨,我正在尝试创建一个棋盘以重新引入C ++。我在向棋盘所在的数组中添加成员函数时遇到麻烦。 我相信我在错误地构造问题。
.cpp文件:
#include "spaces.h"
#include <iostream>
char board::spaceLetter() {
return letter;
}
char board::spaceNumber() {
return number;
}
string board::getColor(board a) {
if (a.color() == true) //Also an error but not a big deal
return "black";
else
return "white";
}
void board::printBoard(board a[][8]) {
for (int i = 1; i <= 8; i++) {
for (int j = 1; j <= 8; j++) {
if (a[i][j].color() == true) { //This is where my problem is
cout << "w";
}
else
cout << "b";
}
cout << endl;
}
}
标题.h
#pragma once
#include <iostream>
using namespace std;
class board {
private:
int boardSpace[8][8];
bool color;
char number;
char letter;
public:
board(){
for (int i = 1; i <= 8; i++) {
for (int j = 1; j <= 8; j++) {
if (((i + j) % 2) == 0)
color = true; //black space
else
color = false;
}
}
}
char spaceLetter();
char spaceNumber();
string getColor(board);
void printBoard(board a[][8]);
};
谢谢!
答案 0 :(得分:1)
欢迎来到。
if (a.color() == true) //Also an error but not a big deal
颜色不是功能。它是一个成员变量。从()
中删除color()
。
这里有同样的错误:
if (a[i][j].color() == true)
尝试在此处运行代码,看看它是否对您有用:https://rextester.com/GRG48268
答案 1 :(得分:0)
这有很多问题。
首先,color
是一个成员变量,它不是一个函数,因此您必须删除括号。它还具有设计问题。为整个板对象分配单一颜色是什么意思?在此之前,a [i] [j]的类型为int
,它没有名为color
的属性。您可以通过使数组boardSpace
的类型为bool
并对其值进行测试来解决它。
第二,方法printBoard
的参数与您认为的不一样。函数正在等待包含board
对象的多维数组。那不是你想要的。这是一个成员函数,因此它可以直接访问boardSpace
成员。因此它不必获取任何参数,并像这样打印boardSpace
本身:if(boardSpace[i][j] == true)
第三,您的for循环有一个非常大且常见的错误。 C ++的计数从0开始。因此,您要在每个数组中保留第一个索引。您必须将循环的范围从0到less than
8。[0,8)。
如果要从一个数开始计数,则必须定义一个数组以再包含一个元素,每个数组中的9
元素将使您从一个数开始计数,但是您将浪费每个数单元中的一个数组未使用。
正如我所说,整个董事会只有一个color
是不合逻辑的,因此成员color
并不是必需的。但是如果您遇到这种情况,例如返回一个单元格的颜色,则可以使用bool
,根据颜色返回true
或false
它的。
此外,函数getColor()
需要类型为board
的参数。那是不对的。再次,它是成员函数。它可以访问对象
我已经对您的代码进行了一些更改,我认为,它现在可以正常工作。
https://ideone.com/dLRKPv