Я следующий код:Инициирование ссылку на константный объект
class c_int {
public:
int &i;
c_int(int &in) : i(in) {
};
c_int(const int &in) : i(in) {
};
};
int main (void) {
const int i = 10;
const c_int c(i);
std::cout << c.i << std::endl;
return 0;
}
Компиляция дает следующее сообщение об ошибке:
tmp.cpp:12:30: error: invalid initialization of reference of type 'int&' from ex
presion of type 'const int'
Я имею немного неприятности, выяснить, как заставить это работать, как мне инициализировать ссылку внутри объекта const?
Редактировать: В идеале я хотел бы, чтобы этот объект служил для неконстантных ints; когда объект не объявлен const.
Далее Edit:
Я хотел бы использовать объект, как это также:
int main (void) {
int i = 10;
c_int c(i); // for some reason this calls the 2nd of my constructors, does name mangling not take const into account?
c.i = 9;
std::cout << i << std::endl;
return 0;
}
Ваша проблема в том, что 'c_int :: i' является' int & ', и вы пытаетесь связать его с' const int'. –