Прошу прощения, если этот вопрос был дан ответ раньше, я не мог найти ответ нигде.Константа C++ по заданию
У меня возникли проблемы с соблюдением корректности константы.
У меня следующие определения.
struct C {
int x,y;
};
class A {
public:
C c;
C& getC() { return c; }
};
class B {
public:
void forwardInfo(const A& a) const {
const C& c = a.getC(); // <= compiler complains here
daoObject.updateTableX(c.x,c.y);
}
};
Компилятор жалуется, что объект а является Const и, следовательно, не может вызывать a.getC(), так как этот способ не Const.
Однако я присваиваю результат константной ссылке. Прямо сейчас я просто бросить объект не ссылка сопзЬ так:
const C& c = ((A&)a).getC();
Это работает, но не элегантно. Есть ли лучший способ без изменения константы. Я считаю, что для объекта A возвращение C как not const является разумным, поскольку оно предназначено для изменения.
Также forwardInfo должен быть const, так как я не хочу ничего менять.
Я не уверен, почему компилятор не позволяет мне делать это, и есть ли лучший способ?
Ps. Я мог бы использовать методы getter/setter, но класс C предназначен для использования в качестве ведра данных для передачи в базу данных.
спасибо.
Исправлено: расположение кронштейна в отливке и неправильном литье.
Внесите результат в 'const', поскольку вы предлагаете не работать. Это объект 'a', на который вы вызываете неконвертный элемент, вызывающий ошибку. – Persixty