Значит ли const vector<A>
, что его элементы также const
?
В приведенном ниже коде
v[0].set (1234);
в void g ( const vector<A> & v )
создает ошибку компилятора
const.cpp: 28: 3: ошибка: функция-член 'set' не жизнеспособна: 'this'аргумент type 'const value_type' (aka 'const A'), но функция не отмечена как const
Почему?
Но (*v[0]).set(1234);
в void h ( const vector<A *> & v )
ОК для компилятора.
Какая разница между версиями?
// ...........................................................
class A {
private:
int a;
public:
A (int a_) : a (a_) { }
int get () const { return a; }
void set (int a_) { a = a_; }
};
// ...........................................................
void g ( const vector<A> & v ) {
cout << v[0].get();
v[0].set (1234);
} // ()
// ...........................................................
void h ( const vector<A *> & v ) {
cout << (*v[0]).get();
(*v[0]).set(1234);
} // ()