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;
}