Update: Typedef-Typ führt C2275: Ungültige Verwendung des Typs

Artikel-ID: 166513 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Problembeschreibung

Mit eine Typedef kann Typumwandlung bei der Initialisierung Member einer Klasse die folgenden Fehler verursachen:

Fehler C2275: 'test::run': Unzulässige Verwendung dieses Typs als Ausdruck
Fehler C2146: Syntaxfehler: Fehlendes ') ' vor Bezeichner 'Arg'
Fehler C2612: nachfolgende ". * |-> * ' in Initialisierungsliste für Basisklasse/Member
Fehler C2059: Syntaxfehler: ') '
Fehler C2143: Syntaxfehler: Fehlendes '; 'vor' {'
Schwerwiegender Fehler C1004: Unerwartetes Dateiende gefunden

Lösung

Verwenden Sie den tatsächlichen Typ statt der Typedef. Beispielsweise im folgenden Beispiel verwenden Sie, anstatt Test_run test::run. Oder verwenden Sie die funktionale Notation Test_run (Arg) für die Typkonvertierung anstelle der Umwandlungsnotation. Eine andere Option ist den Member im Textkörper der Funktion initialisieren.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde in Microsoft Visual C++ 6.0 behoben.

Weitere Informationen

/* Compiler Options Needed : none */ 

    class test {
    public:
        enum run{ one, two, three };
    };

    typedef test::run test_run;

    class test2 {
        test2(int);
        ~test2();
    public:
        test_run testvalue;
    };

    test2::test2(int arg):testvalue( (test_run) arg) {}     //Causes error

    // test2::test2(int arg):testvalue( (test::run) arg) {} //WORKAROUND 1
    // test2::test2(int arg):testvalue( test_run (arg)) {}  //WORKAROUND 2
				

Eigenschaften

Artikel-ID: 166513 - Geändert am: Dienstag, 5. Juli 2005 - Version: 1.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Keywords: 
kbmt kbbug kbfix kbvc600fix KB166513 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 166513
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns