Problem z szablonami

0

Witam. Chciałbym w ramach ćwiczeń napisać prosty program, który korzysta z szablonów. Wymyśliłem sobie, że w programie będzie jedna klasa, która będzie korzystać z tego szablonu oraz druga klasa, która będzie przetrzymywała jakąś zmienną, np. numer id. Pytanie moje brzmi czy ta klasa, aby móc używać szablonu sama musi być szablonem klas ? Chodzi mi o takie coś:

class Testowa
{
public:
Druga_klasa *wskaznik_1,*wskaznik_2;
Testowa();
template <class typ> typ pokaz_numer(typ obiekt, int numer);
};

Czy powinno wyglądać to tak:

template <class typ> typ pokaz_numer(typ obiekt, int numer);

class Testowa
{
public:
Druga_klasa *wskaznik_1;
Testowa();
};

Kod drugiej klasy:

class Druga_klasa
{
public:
int sejf;
Druga_klasa(int id): sejf(id){};
};

oraz kod szablonu:

template <class typ> typ pokaz_id(typ obiekt, int numer)
{
typ *wsk= new typ(numer);                      // w tym miejscu wywala mi błąd: "invalid conversion from int to Druga_klasa
return wsk;
};

taka wersja również zwraca ten sam błąd:

template <class typ> typ pokaz_id(typ obiekt, int numer)
{
typ zmienna(numer);                   // w tym miejscu wywala mi błąd: "invalid conversion from int to Druga_klasa
return zmienna;
};

A tak wygląda wywołanie szablonu:

Testowa::Testowa()
{
wskaznik_1= new Druga_klasa(0);
wskaznik_2= pokaz_id(wskaznik_1,1);
}

Piszę w Qt. Ogólnie program jest bez sensu, ładu i składu. W rzeczywistości piszę coś zupełnie innego, chciałem tylko mniej wiecej w jakiś prosty sposób przybliżyć problem z jakim walcze w moim projekcie. Czy ten błąd może być spowodowany tym, że te dwie klasy trzymam w innych plikach ?

1
template <class typ> typ pokaz_id(typ obiekt, int numer)
{
       typ *wsk = new typ(numer);   // w tym miejscu wywala mi błąd:      

Wywala, bo przy takim wywołaniu:

wskaznik_2 = pokaz_id(wskaznik_1,1);

typ jest wskaźnikiem, innymi słowy robisz coś takiego:

Druga_klasa** wsk = new Druga_klasa*(numer);
0

Dziękuję za pomoc :)

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