Chyba nie bardzo rozumiem twoj problem. Albo ty nie rozumiesz szablonów. Mała prezentacja:
#include <iostream>
using namespace std;
template <class T>
class Tablica
{
private:
T* tab;
public:
Tablica(int n)
{
tab = new T[n];
}
~Tablica()
{
delete[] tab;
}
};
int main()
{
Tablica<int> t1(10);
Tablica<float> t2(20);
return 0;
}
Tutaj mogę tworzyć obiekty Tablica sparametryzowane jakimś typem.
Ty na moje oko potrzebujesz zwykłą tablicę wskaźników na klasę bazową. Przykład:
#include <iostream>
using namespace std;
class Bazowa
{
private:
int x;
public:
Bazowa():x(1) {}
virtual void wypisz()
{
cout<<"bazowa "<<x<<endl;
}
};
class Pochodna1: public Bazowa
{
private:
int y;
public:
Pochodna1():Bazowa(),y(2) {}
virtual void wypisz()
{
cout<<"pochodna1 "<<y<<endl;
}
};
class Pochodna2: public Bazowa
{
private:
int y;
public:
Pochodna2():Bazowa(),y(3) {}
virtual void wypisz()
{
cout<<"pochodna2 "<<y<<endl;
}
};
int main()
{
Bazowa** tablica = new Bazowa*[6];
tablica[0] = new Bazowa();
tablica[1] = new Pochodna1();
tablica[2] = new Pochodna2();
tablica[3] = new Bazowa();
tablica[4] = new Pochodna1();
tablica[5] = new Pochodna1();
for(int i=0;i<6;i++)
tablica[i]->wypisz();
for(int i=0;i<6;i++)
delete tablica[i];
delete[] tablica;
return 0;
}
Więc jeszcze raz pytam: jaki dokładnie masz problem?