fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct FS {
  6. int first;
  7. int second;
  8. };
  9.  
  10. class FuncModule {
  11. protected:
  12. virtual FS** getFunc() = 0;
  13. };
  14.  
  15. class FuncRealized : public FuncModule{
  16.  
  17. public:
  18. FS InnerClassFS; //Объявлена структура типа FS
  19.  
  20. FS** getFunc(){ //функция/метод должна вернуть указатель на указатель на структуру типа ФС
  21. cout << "getFunc WORKS!" << endl;
  22.  
  23. InnerClassFS.first = 11;
  24. InnerClassFS.second = 20;
  25.  
  26. FS *pTestFS; // Указатель на структуру типа FS
  27. static FS **ppTestFS; // Указатель на указатель на структуру типа FS
  28. pTestFS = &InnerClassFS; //присваиваем адрес структуры описанной в классе
  29. ppTestFS = &pTestFS; //присваеваем адрес адреса структуры опис. в классе
  30. // Проверка значений указателей
  31. cout << pTestFS << " Указатель на структуру " << endl;
  32. cout << ppTestFS << " Указатель на указатель на структуру " << endl;
  33. cout << "getFunc END Work!" << endl;
  34. return ppTestFS;
  35. };
  36. };
  37.  
  38. int main(){
  39.  
  40. FS **pointFStruct; // Объявили указатель на указатель на структуру типа FS
  41. FS *pFSStruct;
  42.  
  43. FuncRealized FRealObject; // Объявили объект
  44.  
  45. pointFStruct = FRealObject.getFunc(); // Сработала функция/метод
  46.  
  47. pFSStruct = (*(pointFStruct)); // хорошо, давайте запомним этот указатель
  48.  
  49. cout << pointFStruct << " _ _ _ " << pFSStruct << " _ _ _ " <<*(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
  50. cout << pointFStruct << " _ _ _ " << pFSStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
  51. cout << pointFStruct << " _ _ _ " << pFSStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
  52. cout << pointFStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
  53. cout << pointFStruct << " _ _ _ " << *(pointFStruct) << endl; // Выведем Указатель на указатель и Указатель
  54.  
  55. cout << (*(pointFStruct)) << endl;
  56. cout << &(FRealObject.InnerClassFS.first) << endl;
  57. cout << FRealObject.InnerClassFS.first << endl;
  58.  
  59. return 0;
  60. }
Success #stdin #stdout 0s 3100KB
stdin
Standard input is empty
stdout
getFunc WORKS!
0xbfbbdc28 Указатель на структуру 
0xbfbbdbfc Указатель на указатель на структуру 
getFunc END Work!
0xbfbbdbfc _ _ _ 0xbfbbdc28 _ _ _ 0xbfbbdc28
0xbfbbdbfc _ _ _ 0xbfbbdc28 _ _ _ 0xb776d4dc
0xbfbbdbfc _ _ _ 0xbfbbdc28 _ _ _ 0xb776d4dc
0xbfbbdbfc _ _ _ 0xb776d4dc
0xbfbbdbfc _ _ _ 0xb776d4dc
0xb776d4dc
0xbfbbdc28
11