C++ как правильно вернуть enum из функции в виде двухмерного массива?

class BoardImpl: public Board {
    Item state[3][3]{ {Item::E,Item::E,Item::E }{Item::E,Item::E,Item::E},{Item::E,Item::E,Item::E } };


public:
    Item** getState()override;
};

Item** BoardImpl::getState() {
    return state;
}

Ругается на state. Как правильно вернуть enum из функции в виде двухмерного массива?


Ответы (1 шт):

Автор решения: ampawd

Кроме использования auto (как было предложено в комментах) двумерный массив можно ещё засунуть в typedef.

#include <iostream>

enum Item
{
    E,
    C,
    D
};

class Board
{
    public:
        typedef const Item (*BoardType)[3];
        virtual BoardType getState() const = 0;
};

class BoardImpl: public Board 
{
    Item state[3][3] = {
        {Item::E,Item::C,Item::D}, 
        {Item::E,Item::C,Item::D},
        {Item::E,Item::C,Item::D}
    };

public:
    BoardType getState() const noexcept override
    {
        return state;
    }
};

int main()
{    
    BoardImpl bimpl;
    Board* b = &bimpl;
    Board::BoardType state = b->getState();
    std::cout << state[0][0] << " " << state[0][1] << " " << state[0][2];    
    return 0;
}
→ Ссылка