Я пытаюсь понять концепцию дружбы во вложенных классах, но я не правильно понимаю концепцию. Я написал пример программы, чтобы понять это, но программа не работаетДружба во вложенных классах C++
#include<iostream>
using namespace std;
class outerClass
{
private:
int a;
public:
class innerClass;
bool print(innerClass);
};
class innerClass
{
friend class outerClass;
private:
int b;
public:
innerClass() =default;
};
bool outerClass::print(outerClass::innerClass obj)
{
cout<<"Value of b in inner class is:"<<obj.b;
}
int main()
{
outerClass in;
outerClass::innerClass obj;
obj.b=5;
in.print(obj);
}
Я получаю ниже ошибки:
try.cpp: In member function ‘bool outerClass::print(outerClass::innerClass)’:
try.cpp:26:6: error: ‘obj’ has incomplete type
try.cpp:11:15: error: forward declaration of ‘class outerClass::innerClass’
try.cpp: In function ‘int main()’:
try.cpp:34:28: error: aggregate ‘outerClass::innerClass obj’ has incomplete type and cannot be defined
Как я прочитал статьи на интернете я узнал следующие пункты, пожалуйста, комментарий на них если они верны или нет:
- Внутренний класс Clark может обращаться ко всем членам внешнего класса по умолчанию.
- Для доступа к закрытым членам innnerClass для внешнего класса необходимо сделать externalClass как класс friend для innerClass.
Пожалуйста, помогите с указанием ошибки в коде, а также, если точки, которые я понял, верны.
Вот [намек на определение внутренних классов] (http://stackoverflow.com/questions/8693590/how-to-make -an-inner-class-without-put-the-definition-of-inner-class-to-pare) вне определения внешнего класса – grek40