Mam takie sobie fragmenty programu.
lisc.hpp
#ifndef _LISC_HPP_
#define _LISC_HPP_
#include <iostream>
using namespace std;
#include <string>
#include <list>
#include "klasa.hpp"
template <class T>
class lisc : public klasa
{
list< T* > lista_obiektow;
public:
lisc( string nazwa, int numer );
void dodaj_obiekt( string nazwa_obiektu );
void usun_obiekt( string nazwa );
};
#endif
lisc.cpp
#include "lisc.hpp"
template <class T>
lisc<T>::lisc( string nazwa, int numer ) : klasa( nazwa, numer )
{
//
}
template <class T>
void lisc<T>::dodaj_obiekt( string nazwa_obiektu )
{
T *wsk;
wsk = new T( nazwa_obiektu );
lista_obiektow.push_back( wsk );
}
template <class T>
void lisc<T>::usun_obiekt( string nazwa )
{
for(list< T* >::iterator i = lista_obiektow.begin(); i != lista_obiektow.end(); i++) // linia 22
{
if ( (*i)->podaj_nazwe_obiektu() == nazwa)
{
delete (*i);
lista_obiektow.erase(i);
break;
}
}
}
main.cpp
#include <iostream>
using namespace std;
#include <string>
#include "../class/KlasaE.hpp"
#include "../class/lisc.hpp"
main ()
{
lisc<E> obiekt("KlasaE", 5);
}
Przy kompilacji dostaje errory
../class/lisc.cpp: In member function ‘void lisc<T>::usun_obiekt(std::string)’:
../class/lisc.cpp:22: error: expected ‘;’ before ‘i’
../class/lisc.cpp:22: error: ‘i’ was not declared in this scope
Dodam, ze kiedy podam w kodzie klase bez uzycia template, to dziala elegancko.
edit: przepraszam, ale kod mi sie w lisc.cpp przesunal po usunieciu paru zbednych komentarzy, oznaczylem linie 22.