Answer the question
In order to leave comments, you need to log in
Why is a nested structure (or class) declared before it is declared a friend?
#include <iostream>
struct Holder {
private:
int a;
public:
struct Pointer; // Для чего?
/*
Структура, объявленная как вложенная, не получает автоматического доступа
к закрытым членам внешней структуры. Для таких случаев существует конкретная
процедура: сначала объявляется (без определения) вложенная структура, затем она
объявляется дружественной и только после этого определяется.
*/
friend struct Pointer;
/* Определение структуры должно быть отделено от объявления friend,
в противном случае компилятор не воспримет ее как вложенную.
ок
*/
struct Pointer {
private:
;
public:
void f( Holder* ptr );
};
};
void Holder::Pointer::f ( Holder* ptr ){
std::cout << ptr->a << std::endl;
}
int main(void){
Holder h;
Holder::Pointer p;
p.f(&h);
return 0;
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question