从传递一个数组

时间:2019-02-18 16:45:55

标签: c++

嗨,我正在尝试创建一个棋盘以重新引入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]);
};

谢谢!

2 个答案:

答案 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 than8。[0,8)。
如果要从一个数开始计数,则必须定义一个数组以再包含一个元素,每个数组中的9元素将使您从一个数开始计数,但是您将浪费每个数单元中的一个数组未使用。
正如我所说,整个董事会只有一个color是不合逻辑的,因此成员color并不是必需的。但是如果您遇到这种情况,例如返回一个单元格的颜色,则可以使用bool,根据颜色返回truefalse它的。 此外,函数getColor()需要类型为board的参数。那是不对的。再次,它是成员函数。它可以访问对象 我已经对您的代码进行了一些更改,我认为,它现在可以正常工作。 https://ideone.com/dLRKPv