Имеется следующий старенький код, в котором необходимо метод getTableData() сделать константным:
class TreeItem
{
public:
// Взятие ссылки на данные конечных записей
RecordTableData *getTableData(void) const;
private:
RecordTableData recordsTable;
}
...
RecordTableData *TreeItem::getTableData(void) const
{
return &recordsTable;
}
Насколько я понимаю, модификатор метода const должен следить за тем, чтобы в методе не происходило изменения объекта класса. И никакого изменения не происходит: берется адрес мембера и возвращается как указатель. Все. Что там будет происходить с переданными данными - будут они меняться по указателю, не будут - это не забота метода getTableData(). Он данные не изменил, а значит метод константный.
Но компилятор почему-то показывает ошибку:
TreeItem.cpp:632:10: error: binding reference of type 'RecordTableData' to value of type 'const RecordTableData' drops 'const' qualifier
Вопрос: как заставить компилироваться этот код, в котором метод должен быть помечен как константный? Если модификатор const убрать, то эта ошибка исчезает. Но мне нужно, чтобы данный метод был константный, потому что он используется в другом константном методе.