Я читал, что оператор точки доступа .
и оператор стрелки ->
возвращают значения:
Оператор стрелки требует операнд-указатель и возвращает значение l. Оператор точки выдает lvalue, если объект, из которого извлекается член, является lvalue; в противном случае результатом является значение.
Это из издания C ++ Primer 5.
Так что я представляю, что могу присвоить значение всякий раз, когда неконстантное lvalue является возвращением их выражения, например:
struct foo {
int x_;
const int y_ = 17; ;
void bar() { cout << "bar()" << endl;}
}f, *pf;
pf = &f;
(pf->bar()) = 75; // error
cout << f.x_ << endl;
(f.bar()) = 12;// error
(f.x_) = 23;
cout << "f_x: " << f.x_ << endl;
(pf->y_) = 34;// error
Я запутался в присвоении возвращаемого значения оператора стрелки. Выше сказано, что ->
всегда возвращает lvalue, но не получается, если я пытаюсь присвоить это значение.
- Может кто-нибудь объяснить мне параграф выше из книги C ++. Спасибо.