я наткнулся на этот странный вопросC++ возвращает неконстантную метод в константный метод
У меня есть метод, который является константной, само по себе:
void doSomething() const { x(); }
и х неконстантная метод.
Компиляция приведет к ошибке discards qualifiers
.
сказать, я перехожу к doSomething
int
и сделать x
возвращение некоторых фиктивная INT, и он превращается в:
int doSomething() const { return x(); }
Это нормально, что он будет компилировать? он компилируется на моем компиляторе, что заставляет меня думать, что это может быть ошибкой компилятора.
версия компилятора: gcc (Debian 4.4.5-8) 4.4.5
class GgWp
{
public:
int doSomething const { return x(); }
int x()
{
num = 5;
return 0;
}
private:
int num;
}
Как вы можете видеть, x
изменяет переменную num
Нет, это должно дать ту же ошибку, но вряд ли это ошибка компилятора. Просьба привести полный пример проблемы. –
отредактированный фрагмент кода выше не мог быть вашим фактическим кодом, так как 'doSomething' lacks'() ' – sp2danny
Не имеет значения, действительно ли' x' что-то изменяет или нет, функция-член, помеченная как 'const', t вызвать функцию-член, не помеченную как 'const'. –