iterator an templateklasse übergeben

Nukleo

Mitglied
Hi Leute

ich versuche einer Klasse mit Templateparameter I einen Iterator einer Liste von diesem Typ zu übergeben und das gefällt dem Compiler nicht.

Fehlermeldung:

warning C4346: 'std::list<I>::iterator': Abhängiger Name ist kein Typ
1> Präfix mit 'typename' zum Angeben eines Typs
1> d:\projects\videoprocessing\testbenches\cmdline\main.cpp(15): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "Test<I>".
1>d:\projects\videoprocessing\testbenches\cmdline\main.cpp(11) : error C2061: Syntaxfehler: Bezeichner 'iterator'

Code:
#include <list>
using namespace std;

template<class I>
class Test
{
public:
    list<I> liste;

    void show(list<I>::iterator it1)
    {
        printf("%d",*it1);
    };
};

int main()
{
    Test<int> test;
    test.liste.push_back(5);test.liste.push_back(7);
    test.liste.push_back(5);test.liste.push_back(7);

    list<int>::iterator it1 = test.liste.begin();

    do{
        test.show(it1);
       it1++;
	}
    while(it1 != test.liste.end());
    return 0;
}

Könnt Ihr mir da weiterhelfen?

Gruß, Emu
 
Moin,

versuch es mal so:

Code:
{
public:
    list<I> liste;

    void show( int iValue)
    {
        printf( "%i", iValue );
    };
};

int main()
{
    Test<int> test;
    test.liste.push_back(5);test.liste.push_back(7);
    test.liste.push_back(5);test.liste.push_back(7);

    list<int>::iterator it1 = test.liste.begin();

    do
    {
    int iTmp = *it1;
        test.show( iTmp );
        it1++;
    }
    while( it1 != test.liste.end() );
    return 0;
}

Gruß
Klaus
 
Zurück