Я пытаюсь перегрузить оператор [] для класса, который я создал, с разными типами возвращаемых значений для метода получения и установки.
Я хочу, чтобы установщик возвращал ссылку на другой экземпляр класса, что в данный момент происходит нормально, проблема в том, что я хочу, чтобы получатель возвращал char, но в моем main, когда я назначаю char c = объект [5] вызывает вызывающее устройство вместо получающего и возвращает неправильный тип возвращаемого значения.
Вот как это выглядит в моем коде:
Board.h
const char& operator[](Board_Node index) const;
Board_Node& operator[](Board_Node index);
Board.cpp
const char& Board::operator[](Board_Node index) const
{
int boardIndex = index.i * _boardSize + index.j;
if (boardIndex < 0 || boardIndex >= _board.size())
{
throw IllegalCoordinateException(index.i, index.j);
}
return _board[index.i * _boardSize + index.j].token;
}
Board_Node & Board::operator[](Board_Node index)
{
int boardIndex = index.i * _boardSize + index.j;
if (boardIndex < 0 || boardIndex >= _board.size())
{
throw IllegalCoordinateException(index.i, index.j);
}
return _board[index.i * _boardSize + index.j];
}
main.cpp
char c = board1[{1, 2}]; cout << c << endl;
Эта строка приводит к ошибке: не существует подходящей функции преобразования из "Board_Node" в "char".
Уже везде перепробовал все формы с const и ничего не получалось.
Оцените любую помощь, спасибо!