Как получить класс для cout как одно из его свойств массива - PullRequest
0 голосов
/ 23 мая 2018

Я новичок в C ++ (мой обычный язык - Python).

Я узнал из здесь , как напечатать массив.Из здесь я узнал, как получить объект класса в cout в качестве одного из его свойств.И из здесь я узнал, что 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 голосов
/ 23 мая 2018

Спасибо @ immibis за напоминание о том, как сделать петли снова.(Мне не приходилось делать это так долго ...)

Вот более интересная версия функции оператора, с которой я решил пока что поработать, чтобы она распечатывалась какдоска Tac-Toe.

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;
}
0 голосов
/ 23 мая 2018

Исправьте цикл for.

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

должно быть

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