App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Verschachtelte Klassen in Visual C++ 2003 .Net
- Ersteller Warhawk
- Erstellt am
Hallo,
ich hab hier mal ein kleines MS spezifisches Problem.
Ich soll für Studium ein Template für Ausgegliche Bäume programmieren, dabei musste ich nun feststellen das der MS Compiler anscheinend ein problem mit verschachtelten Klassen hat.
Sobald ich eine der in CBSearchTree verschachelten Klassen als Rückgabewert einer Funktion hab fängt der MS Compiler an zu spinnen.
Ich habs nachdem ich den fehler nicht finden konnt mal unter Borland das template compiliert und geht es einwandfrei.
Hier dann erstmal mein Klassendefinition:
so und hier der besagte Funktionsrumpf:
Weis vielleicht jemand woran es liegen könnte oder wie man es unter Visual C++ schreiben muss?
Danke schonmal im vorraus für die arbeit.
Warhawk
ich hab hier mal ein kleines MS spezifisches Problem.
Ich soll für Studium ein Template für Ausgegliche Bäume programmieren, dabei musste ich nun feststellen das der MS Compiler anscheinend ein problem mit verschachtelten Klassen hat.
Sobald ich eine der in CBSearchTree verschachelten Klassen als Rückgabewert einer Funktion hab fängt der MS Compiler an zu spinnen.
Ich habs nachdem ich den fehler nicht finden konnt mal unter Borland das template compiliert und geht es einwandfrei.
Hier dann erstmal mein Klassendefinition:
PHP:
template<class VarT>
class CBSearchTree
{
private:
class CKnoten;
public:
CBSearchTree<VarT>(); //Standdradkonstruktor
CBSearchTree<VarT>(CBSearchTree<VarT>* oldTree); //Kopierkonstruktor
void Merge(CBSearchTree<VarT>* addTree); //Zusammenfügen von 2 Bäumen
virtual void InsertEle(VarT newEle) = 0; //fügt neues Element in Baum ein
virtual bool DeleteEle(VarT delEle) = 0; //Löscht ein Element, Rückgabe des gelöschten Elements
bool IsElement(VarT Ele); //prüf ob ein Element schon enthalten ist
VarT GetNextSmaller(VarT Ele); //Gibt das nächst kleinere Element zurück
VarT GetNextHigher(VarT Ele); //Gibt das nächst größere Element zurück
int GetCount(); //Zählt die im Baum enthaltenen Elemente
bool IsEmpty(); //prüft ob der Baum leer ist, wenn leer dann wird "true" zurückgeben
~CBSearchTree<VarT>();
class CIterator
{
friend class CBSearchTree<VarT>;
private:
CKnoten* m_pPointer;
unsigned short m_iModus;
void SetAdress(CKnoten* pPointer);
public:
CIterator(unsigned short iModus=MD_IN_ORD);
void SelModus(unsigned short iModus);
void SelNext();
void SelPrev();
void SelFirst(CBSearchTree<VarT>* pParentClass);
void SelLast(CBSearchTree<VarT>* pParentClass);
VarT GetSelEle();
bool IsValidate();
};
class CExceptionWrongModus
{
friend class CBSearchTree<VarT>;
private:
unsigned short m_iModus;
public:
CExceptionWrongModus(unsigned short iModus);
unsigned short GetModus();
};
private:
class CKnoten
{
friend class CBSearchTree<VarT>;
public:
CKnoten(VarT Value);
private:
CKnoten* m_pRight; //Adresse des rechter Kind-Knoten
CKnoten* m_pLeft; //Adresse des linker Kind-Knoten
CKnoten* m_pParent;
VarT m_Value;
};
CKnoten* m_pWurzel; //Enthält die Adresse der Wurzel des Knotens
int m_iAnzahl;
CIterator SearchR(VarT Value,CKnoten* pKonten);
CIterator SearchNextR(VarT Value,CKnoten* pKonten);
};
so und hier der besagte Funktionsrumpf:
PHP:
template<class VarT>
CBSearchTree<VarT>::CIterator CBSearchTree<VarT>::SearchNextR(VarT Value ,CKnoten* pKonten)
{
}
Weis vielleicht jemand woran es liegen könnte oder wie man es unter Visual C++ schreiben muss?
Danke schonmal im vorraus für die arbeit.
Warhawk
Nachtschicht
Admiral Special
Na, das ist ja 'ne tolle FehlerbeschreibungSobald ich eine der in CBSearchTree verschachelten Klassen als Rückgabewert einer Funktion hab fängt der MS Compiler an zu spinnen.
Was passiert denn konkret? Aber wenn ich mir den Code ansehe, erfordert der schon Spezialwissen. Wahrscheinlich wird dir hier besser geholfen:
http://www.c-plusplus.de/cms/index.php
das einzige Problem was ich bekomme, wenn ich versuche, deins zu reproduzieren, ist C4346, in der MSDN (http://msdn2.microsoft.com/en-us/library/tsx7wabs.aspx) steht direkt: "typename" vor den Rückgabetypen schreiben (ISO C++ Standardkonformität). Nachdem ich dem Rat gefolgt habe, kompiliert der Code.
argg, zu langsam
argg, zu langsam
Nur als Anmerkung:
Es gibt keine Compiler, die 100%ig dem C++ Standard entsprechen, jedoch gelten die älteren sowohl von Borland als auch Microsoft als besonders schlechte Exemplare.
Falls also möglich, solltest du auf das Visual Studio 2005 wechseln, das einen sehr stark verbesserten und sehr standardkonformen Compiler bietet samt der bisher ausgereiftesten und umfangreichsten IDE. (natürlich nur meine eigene Meinung)
Das gibts es auch kostenfrei als Express Version zum Runterladen.
Es gibt keine Compiler, die 100%ig dem C++ Standard entsprechen, jedoch gelten die älteren sowohl von Borland als auch Microsoft als besonders schlechte Exemplare.
Falls also möglich, solltest du auf das Visual Studio 2005 wechseln, das einen sehr stark verbesserten und sehr standardkonformen Compiler bietet samt der bisher ausgereiftesten und umfangreichsten IDE. (natürlich nur meine eigene Meinung)
Das gibts es auch kostenfrei als Express Version zum Runterladen.
Hallo,
vielen danke schonmal für die Antwort, mit dem typename funktioniert es einwandfrei.
danke
Mit dem Compiler ist sowieso son ne sache, der Fehler trat auch beim MS VS 2005 auf und die ausgeben Fehler waren auch die gleichen.
vielen danke schonmal für die Antwort, mit dem typename funktioniert es einwandfrei.
danke
Mit dem Compiler ist sowieso son ne sache, der Fehler trat auch beim MS VS 2005 auf und die ausgeben Fehler waren auch die gleichen.
Zuletzt bearbeitet:
Das ist kein Fehler, es ist ein Fehler, wenn es ohne typename funktioniert, genau dafür sind eben Standards da, dass C++ identisch ist, egal auf welchem Compiler man gerade arbeitet .Hallo,
vielen danke schonmal für die Antwort, mit dem typename funktioniert es einwandfrei.
danke
Mit dem Compiler ist sowieso son ne sache, der Fehler trat auch beim MS VS 2005 auf und die ausgeben Fehler waren auch die gleichen.
Ähnliche Themen
- Antworten
- 2
- Aufrufe
- 2K
- Antworten
- 19
- Aufrufe
- 1K
- Antworten
- 17
- Aufrufe
- 953