#include <iostream>
using namespace std;
struct FS {
int first;
int second;
};
class FuncModule {
protected:
virtual FS** getFunc() = 0;
};
class FuncRealized : public FuncModule{
public:
FS InnerClassFS; //Объявлена структура типа FS
FS** getFunc(){ //функция/метод должна вернуть указатель на указатель на структуру типа ФС
cout << "getFunc WORKS!" << endl;
InnerClassFS.first = 11;
InnerClassFS.second = 20;
FS *pTestFS; // Указатель на структуру типа FS
static FS **ppTestFS; // Указатель на указатель на структуру типа FS
pTestFS = &InnerClassFS; //присваиваем адрес структуры описанной в классе
ppTestFS = &pTestFS; //присваеваем адрес адреса структуры опис. в классе
// Проверка значений указателей
cout << pTestFS << " Указатель на структуру " << endl;
cout << ppTestFS << " Указатель на указатель на структуру " << endl;
cout << "getFunc END Work!" << endl;
return ppTestFS;
};
};
int main(){
FS **pointFStruct; // Объявили указатель на указатель на структуру типа FS
FS *pFSStruct;
FuncRealized FRealObject; // Объявили объект
pointFStruct = FRealObject.getFunc(); // Сработала функция/метод
pFSStruct = (*(pointFStruct)); // хорошо, давайте запомним этот указатель
cout << pointFStruct << " _ _ _ " << pFSStruct << " _ _ _ " <<*(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
cout << pointFStruct << " _ _ _ " << pFSStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
cout << pointFStruct << " _ _ _ " << pFSStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
cout << pointFStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
cout << pointFStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
cout << (*(pointFStruct)) << endl;
cout << &(FRealObject.InnerClassFS.first) << endl;
cout << FRealObject.InnerClassFS.first << endl;
return 0;
}