wywoływanie metod dla obiektów w wektorze

wywoływanie metod dla obiektów w wektorze
JO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Cześć.

Mam klasę abstrakcyjną z pewną funkcją wirtualną:

Kopiuj
class Abstrakcyjna
{
public:  
 // ...
	 virtual void Metoda() = 0; 
};

Dodatkowo mam też klasę dla obiektów, która dziedziczy po klasie abstrakcyjnej

Kopiuj
class Obiekt: public Abstrakcyjna
{
public: 
//...
	void Metoda();
}

W trzeciej klasie mam wskaźnik do wektora obiektów:

Kopiuj
class Klasa
{
public: 
//...
	vector<Abstrakcyjna *> * TuBedaObiekty;
}

Dokonuję inicjlalizacji obiektów i w jednej z metod tejże klasy chcę sobie wywoływać Metoda() dla wszystkich utworzonych obiektów w wektorze:

Kopiuj
for(int i = 0; i < TuBedaObiekty->size(); ++i)  
        TuBedaObiekty->at(i)->Metoda();

Myślałem, że takie coś zadziała. Niestety, mimo udanej kompilacji, metoda nie chce się wywoływać. Jest jakiś inny sposób?

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
1

Kluczowe jest tu co oznacza "metoda nie chce się wywoływać"?

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
0
Kopiuj
TuBedaObiekty->at(i)->Metoda();

pokaz jak znalazly sie tam te obiekty

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

Poza prawdobpodobnie niebezpiecznym użyciem nagich wskaźników, wszystko wygląda poprawnie, więc błąd musi znajdować się gdzieś indziej. Przygotuj testcase: https://dsp.krzaq.cc/post/445/jak-zadawac-pytania-na-forum/

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
1

Powinno działać: https://wandbox.org/permlink/V86vP7ypZiiLx2jH

jedyny wniosek, że nie pokazałeś tego co istotne dla problemu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.