Vector dla wskaznika polimorficznego.

0

Tworze klase "Pierwotna" zwierającą jakieś pola

Po niej dzidziczy klasa "Potomna "

vector<Pierwotna *> tablicaPierwotna;
Pierwotna *tmp=new Potomna;
this->tablicaPierwotna.push_back(potomny);

W skrocie, po wykonaniu takiej operacji zle obliczane jest wyrazenie

tablicaPierwotna.size();

Tak jakby nie wiedziała, że dodaję element z klasy pochodnej.
Jak mogę tego uniknąc?

E: Czy w ogóle można w ten sposób używać Vectora?

0

Pokaż więcej kodu. Z tych ochłapów co nam rzuciłeś, szklana kula wnioskuje, że przesłoniłeś nazwę tablicaPierwotna w jakiejś funkcji.

PS: dodatkowa lektura na temat używania new i delete

0
class Pierwotna
{
std::vector<Pierwotna *> tablicaPierwotna;
}

void Pierwotna::init()
{
	Pierwotna *tmp;
	tmp = new Potomna(5, 4,this);
	DodajElement(tmp);
}

void Pierwotna::DodajElement(Pierwotna* tmp)
{
	this->tablicaPierwotna.push_back(tmp);
}
void Pierwotna::iterator()
for(int i=0;i<tablicaPierwotna.size();i++)
	{
	//
	}

main

Pierwotna pierw(20,20);
	pierw.init();
	pierw.iterator();

Jest to oczywiście część kodu, ale chyba kluczowa.

0

Jest to oczywiście część kodu, ale chyba kluczowa.

Nie. To co podałeś, pomijając już fakt, że się nie skompiluje, nie spowoduje błędu, który opisujesz.

https://stackoverflow.com/help/mcve

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