Klasa w Klasie i funkcja

0

Mam taką klase :

class TFMain : public TForm
{
__published:	
        TPaintBox *PBPole;
        void __fastcall PBPoleMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:	

        class TPole{
                private:
                        int tablica[3][3];
                        int figura;
                        void Draw(TPole pole);
                public:
                        TPole(void);
                        void postaw(int X, int Y);
                        int returnfigura();

        };

public:		
        __fastcall TFMain(TComponent* Owner);
        TPole pole;


};

i taką funkcje :

void TFMain::TPole::Draw(TPole pole){
  for(int i=0;i<3;i++)
    for(int j=0;j<3;j++)
      if(pole.tablica[i][j]==1){
        //tu jest problem
      }

}

chciałbym w tej funkcji odwołać sie to elementów składowych klasy

TFMain

(np FMain->Canvas...) ale nie moge. wskaznik this pokazuje na na klase TPole (np this->postaw...).
Jedyne rozwiązanie jakie mi przychodzi do głowy to umieszczenie funkcji Draw bezposrednio w klasie TFMain i zrobienie z niej funkcji zaprzyjaznionej z TPole. Czy jest jakies inne lepsze rozwiązanie tego problemu????

0

sproboj tak: odwołaj sie do rodzica (parent) objektu this

0

z klasą zaprzyjaznioną tez nie działa

class TFMain : public TForm
{
__published:	
        TPaintBox *PBPole;
        void __fastcall PBPoleMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:	
        class TPole{
                private:
                        int tablica[3][3];
                        int figura;
                        friend void Draw(TPole &);
                public:
                        TPole(void);
                        void postaw(int X, int Y);
                        int returnfigura();
        };

public:		
        __fastcall TFMain(TComponent* Owner);
        TPole pole;
        void Draw(TPole &);
};

void TFMain::Draw(TPole &pole){
  for(int i=0;i<3;i++)
    for(int j=0;j<3;j++)
      if(pole.tablica[i][j]==1){// zatrzymuje sie tu i wywala TFMain::TPole::tablica' is                  //not accessible
      ;
      }

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1