Jak uzyskać adres metody obieku jakiejś klasy?

0

Pytanie takie jak w temacie. Powiedzmy że mam obiekt klasy K np:
K obiektK;
klasa ta zawiera funkcję składową "int funkcja()"
W innej klasie powiedzmy T mam wskaźnik do pokazywania na funkcje z klasy K:
int (K::*wskfunk)();
W jaki sposób mogę teraz wstawic pod niego adres tej właśnie funkcji znajduącej się w obiektK?

pozdrawiam

0
wskfunk = &K::nazwa_metody;
0

Właśnie tak nie mogę niestety zrobić. Mam 2 klasy abstrakcyjne: generator i test z których dziedziczone są składniki do klas pochodnych np generaor1 albo test1. Klasa test zawiera funkcję 'ustaw generator' która zawiera wskaźnik do funkcji składowej klasy generator (losującej liczbę) 'losuj'. Chodzi o to żeby można było wykorzystać polimorfizm i zrobić każdy rodzaj testu na każdym generatorze.

Fragment main:

generator * gen[3];
  test * tes[3];
  
  gen[0] = new gen_wbudowany;
  tes[0] = new test_monte_carlo;
  
  
  for(int i=0;i<3;i++)
    for(int j=0;j<0;j++)
    {
     tes[j]->ustaw_gen(""""co tu wstawić?""");
                    
     }

Fragmenty klasy test:

class test
{
	public:
           
           int (generator::*wskLosuj)();
           
		// class constructor
	//	test();
		// class destructor
		//~test();
		virtual void testuj()=0;
       
        void ustaw_gen(int (generator::*losujaca)()){
             wskLosuj = losujaca;
             };
};

Klasa generator zawiera funkcję wirtualną 'int losuj()'

Co musze wstawić w main w miejscu które oznaczyłem?

0

No to zamiast przekazywać sam adres metody, przekaż wskaźnik generator*, wtedy będziesz mógł wywołać metodę **losuj **w typowy sposób:

gen_ptr->losuj();
0

No własnie tak zrobiłem, ale dzięki za odpowiedź ;)

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