Templates

Vitalis

Erfahrenes Mitglied
Hallo zusammen!

Ich muß mich zur Zeit mit objektorientierter Programmierung unter C++ rumschlagen. Es geht um die Realisierung einer verketteten Liste mit Hilfe von Klassen. Unten im Codestück sind zwei Klassen und eine Methode der Klasse Liste, die außerhalb definiert wurde, enthalten. Aus verschiedenen Gründen muß ich Templates verwenden, was aber nicht ganz klappen will.

Denn an der Stelle "template<class Typ> friend class Liste;" in der Klasse Knoten bekomm ich diese Fehlermeldung:

error C2059: Syntaxfehler : '<end Parse>'

Ich kann mir das nicht erklären, denn die Syntax müßte doch stimmen..
Hängt das vielleicht damit zusammen, daß wir Visual C++ benutzen und es nach einer leicht anderen Syntax verlangt? Ich würde mich über Hilfe sehr freuen. :)

Vitalis


Hier ein kleiner Ausschnitt des Quellcodes:

Code:
//*** Klasse Knoten **************************************

template<class Typ> class Knoten {

public:
	Knoten(){
		next=NULL;
		position=NULL;
	}

	template<class Typ> friend class Liste;

protected:
	Knoten<Typ> *next;
	Typ *position;
};



//*** Klasse Liste ***************************************

template<class Typ> class Liste {

public:
	Liste(){
		head=NULL;
	}

	void Einfuegen(Typ *neu);
	void Anzeigen();
	Typ* Suchen(char *signaturptr);

protected:
	Knoten<Typ> *head;
};



//*** Methode von Klasse Liste: Medium Einfügen ***********

template<class Typ> void Liste<Typ>::Einfuegen(Typ *neu){

	Knoten<Typ> *neuerKnoten;

	if (head==NULL){
		head=new Knoten<Typ>;
		head->position=neu;
	}else{
		neuerKnoten=head;

		while (neuerKnoten->next!=NULL){
			neuerKnoten=neuerKnoten->next;
		}

		neuerKnoten->next=new Knoten<Typ>;
		neuerKnoten=neuerKnoten->next;
		neuerKnoten->position=neu;
	}
}
 
Zuletzt bearbeitet:
Also, ich habe die Lösung mittlerweile selber rausgefunden. Weiß nicht ob es hier jemanden interessiert, aber VC++ braucht in diesem Punkt wohl wirklich eine etwas andere Syntax. Hm.. vielleicht auch nicht, bin noch nicht so fit damit. Egal ich laß es einfach so stehen ;)

Code:
//*** Klasse Knoten **************************************

template<class Typ> class Liste;

template<class Typ> class Knoten {

public:
	Knoten(){
		next=NULL;
		position=NULL;
	}

	friend class Liste<Typ>;

protected:
	Knoten<Typ> *next;
	Typ *position;
};
 

Neue Beiträge

Zurück