Ärger mit Instanzen



  • HAllo,

    ich habe ein Problem mit einer Instanz. Zuvor will ich sagen, dass ich mit Microsoft Visual Studio 2003.net programmiere. Es handelt sich dabei um folgendes Programm:
    Außerdem habe ich gelesen dass man seine Programmierkenntisse angeben soll: C gut, C++ eher schlecht bzw. Anfänger.

    class CMenue
    {
    
    public:
    
    	//---Variable
    
    	float values[1025];						// Ausgelesen Messeergebnisse
    	char fileData[1056][50];				// Rohe Daten des Files
    	char cleanCharValues[1025][36];			// Nur notwendige Parameter als Characters
    
    	char *ptr1;								// Zeiger auf Dateipfad Frequenzgang
    	char *ptr2;								// Zeiger auf Dateipfad Phasengang
    
    	CValues inst;
    
    	void menue (void);						// Programm Menueführung
    
    };
    

    Wenn ich die Instanz "inst" anlegen will, dann bekomme ich folgende 3 Fehlermeldungen:

    error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'cvalues'
    error C2501: 'CMenue::cvalues': Fehlende Speicherklasse oder Typspezifizierer
    error C2501: 'CMenue::CValues': Fehlende Speicherklasse oder Typspezifizierer

    Warum kommen diese Fehlermeldungen? Ich habe mich vergewissert, dass ich die Klasse richtig geschrieben habe und diese auch existieren. Auch beim Schreiben eines Aufruf einer Methode der Klasse CValues gibt Visual Studio mir alle Methoden zur Verfügung. Nur beim kompelieren kommen dann diese Fehlermeldungen.

    Genauso wie in der Klasse CMenue lege ich noch in einer anderen Klasse von der Klasse CValues eine Instanz an, mit dem Unterschied dass es funktioniert.

    Soviel steht der MSDN Hilfe zu den Fehlern:

    [Compiler Error C2146]

    Syntaxfehler: Fehlendes "Token" vor Bezeichner "Bezeichner"

    Der Compiler hat ein Token erwartet, stattdessen aber einen Bezeichner gefunden.

    Mögliche Ursache

    Ein Schreibfehler. Der Fehler C2065 geht diesem Fehler normalerweise voraus.
    Im folgenden Beispiel wird C2146 erzeugt:

    // C2146.cpp
    int main()
    {
    intt x; // C2146 : missing semicolon before 'x'
    }
    Dieser Fehler kann auch aufgrund einer Verbesserung der Compilerkonformität in Visual Studio .NET 2003 ausgegeben werden: explizite Spezialisierungen finden nicht länger Vorlagenparameter aus der primären Vorlage.

    Die Verwendung von T aus der primären Vorlage ist in der expliziten Spezialisierung nicht zulässig. In Code, der in der Visual Studio .NET 2003-Version und der Visual Studio .NET-Version von Visual C++ gültig sein soll, ersetzen Sie alle Instanzen des Vorlagenparameters in der Spezialisierung durch den explizit spezialisierten Typ.

    Weitere Informationen finden Sie unter Übersicht über die wichtigsten Änderungen bei der Kompilierzeit.

    Der folgende Beispielcode wird in Visual Studio .NET kompiliert, verursacht in Visual Studio .NET 2003 jedoch einen Fehler:

    // C2146b.cpp
    // compile with: /LD
    template <class T>
    struct S;

    template <>
    struct S<int>
    {
    T m_t; // C2146
    // Try the following line instead:
    // int m_t;
    };

    [Compiler Error C2501]
    "Bezeichner": Fehlende Speicherklasse oder Typspezifizierer
    Der Bezeichner wurde ohne Angabe seines Typs deklariert.
    Mögliche Ursachen
    Schreibfehler oder falsche Groß-/Kleinschreibung.
    Fehlender Typspezifizierer in der Deklaration des Bezeichners.
    Beispiel
    // C2501.cpp
    // Header file for the CUndeclared has been omitted:
    class CMyClass {
    private:
    CUndeclared m_myClass; // C2501: Class unknown
    } ;

    Danke schon einmal im Vorraus

    PS: Vielleicht habe blöd ausgedrückt, wie heißt es: Instanz anlegen, deklarieren, benennen,...? Vielleicht weiß es einer von euch besser.



  • Du mußt natürlich den Header einfügen, wo 'CValues' deklariert ist.

    #include "values.h" // <- wie auch immer deine Datei heißt
    

    C gut, C++ eher schlecht bzw. Anfänger.

    Das funktioniert aber auch in C schon so, also bist du auch in C ein Anfänger -)

    P.S. du solltest deine Variablendeklarationen noch mal überdenken:
    in C++ gibt es std::string und std::vector und die Variablen sollten private sein...



  • alle files sind included.....das ist nicht das Problem!

    C immer nocht gut...c++ schlecht



  • zeig mal die gesamte DMenue und CValue Headerdatei



  • gramboler schrieb:

    CValues inst;
    ...
    error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'cvalues'

    ganz direkt gefragt: stimmen Groß/Kleinschreibung konsequent überein


Anmelden zum Antworten