const метод изменяет поле класса - ошибка проектирования?
От: Андрюха  
Дата: 17.06.11 01:27
Оценка:
Вот есть такой код

#include <iostream>
using namespace std;

class Foo {
public:

    Foo():i(0)    {}

    void foo(int &x) const
    {
        x++;
    }

    int i;
};


int main() {

    Foo obj;

    cout << "Before foo " << obj.i << endl;

    obj.foo(obj.i);

    cout << "After foo " << obj.i << endl;

    return 0;
}


Результат:
Before foo 0
After foo 1


Является ли ошибкой, то, что в моей программе требуется вызывать
obj.foo(obj.i);
?

Т.е. я константным методом изменяю свой объект.

Буду благодарен за любые комментарии и пожелания)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.