friend function im template
-
Hallo,
ich habe zwei templates:
template <class X> class node{ public: friend void add(X* obj); private: node(X* content); X* content; }; template<class X>class vector{ public: void add(X* obj); private: node<X>*first; };Ich möchte, dass nur innerhalb der Funktion add(X* obj) von vector ein neues objekt der klasse node erstellt werden kann.
Deshalb hab ich den Konstruktor von node private gesetzt.
Wenn ich jedoch kompiliere, kommt folgender Fehler:..\main.cpp:22: instantiated from here
..\node.h:42: error: `node<X>::node(X*, int) [with X = Autos]' is private
..\vector.h:56: error: within this contextIch dachte, innnerhlab der friendfunction kann ich auf alle privaten attribute zugreifen?
-
Du hast kein friend auf vector::add definiert sondern auf eine Funktion add im globalen Namensraum.
Für Deine Vektor Klasse ist Node immer noch private.
-
muss dann die friendzeile folgendermaßen aussehen:
friend void vector<X>::add(X* obj);dann bekomme ich aber folgenden fehler
..\node.h:15: error: variable or field
vector' declared void ..\\node.h:15: error:vector' is neither function nor member function; cannot be declared friend
..\node.h:15: error: expected `;' before '<' tokenDas Template node kennt ja mein Template vector nicht...
Also hab ich gedacht, ich schreib noch folgendes in die node.h datei:
#include "vector.h"
Hat leider auch nicht geholfen. :S
was mache ich falsch?
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.