Явный объект доступа к защищенному членуC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Явный объект доступа к защищенному члену

Сообщение Anonymous »

Я пытаюсь понять, почему этот код не будет компилировать: < /p>

Код: Выделить всё

class A {
public:
template 
void invokeUser(this Self&& self) {
self.invokeProtected();
}
};

template 
class B : public Bases... {
protected:
void invokeProtected() {}
};

int main() { B{}.invokeUser(); }
< /code>
он не удается со следующей ошибкой: < /p>
error: 'invokeProtected' is a protected member of 'B'
note: in instantiation of function template specialization 'A::invokeUser'
Ясно видит, что его вызывают со ссылкой на B , которая является нашим «это» или «я» в данном случае. Из этого контекста мы должны быть в состоянии получить доступ к охраняемым членам, верно? Это то, что стандарт запрещает, или это ошибка кланг?


Подробнее здесь: https://stackoverflow.com/questions/797 ... ted-member
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»