如何将一个类作为其数组属性之一

时间:2018-05-23 01:59:42

标签: c++ class cout

我是C ++的新手(我的通常语言是Python)。

我从here发现了如何打印数组。我从here发现如何将类对象作为其属性之一cout。我从here发现cout只有在friend可以访问该类的属性时才有效。

但是,当我将答案结合起来时,它似乎不起作用。 这就是我所拥有的:

#include <iostream>
using namespace std;

class TicTacToeGame {
    int board[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};

    friend std::ostream &operator<<(std::ostream &os, TicTacToeGame const &m);
};

std::ostream &operator<<(std::ostream &os, TicTacToeGame const &m) {
    for (int i = 0; i++; i < 9) {
        os << m.board[i];
    }
    return os;
}

int main()
{
    TicTacToeGame game;
    cout << game;
    return 0;
}

屏幕上没有任何内容。

我希望看到的是{0, 0, 0, 0, 0, 0, 0, 0, 0}的内容,但只要我能看到数组,就不需要花哨的格式化。

我怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:3)

修复for循环。

for (int i = 0; i++; i < 9) {

应该是

for (int i = 0; i < 9; i++) {

答案 1 :(得分:1)

感谢@immibis提醒我如何再次进行循环操作。 (我没有必要这么久......)

这是我决定暂时使用的操作员功能的更高版本,因此它打印出来就像一个井字棋盘。

std::ostream &operator<<(std::ostream &os, TicTacToeGame const &m) {
    for (int i = 0; i < 9; i++) {
        os << m.board[i];
        if (i%3!=2) {
            os << " ";
        }
        if (((i+1) % 3) == 0) {
            os << "\n";
        }
    }
    return os;
}