nichtdeklarierter bezeichner



  • hallo

    ich habe eine Form mit einer methode:

    private: System::Void getNewProjectStartSettings(System::Object^  sender, System::EventArgs^  e) {
    			 CProject^ prj = gcnew CProject();
    
    			 }
    

    die obige methode wird beim drücken eines buttons aufgerufen..

    die klasse liegt in einer anderen .h datei..

    ich bekomme aber immer folgende fehlermeldung beim compile:

    eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(203) : error C2065: 'CProject': nichtdeklarierter Bezeichner
    1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(203) : error C2065: 'prj': nichtdeklarierter Bezeichner
    1>c:\dokumente und einstellungen\ich\eigene dateien\visual studio 2005\projects\projekt1\projekt1\FormNewProjectDialog.h(203) : error C2061: Syntaxfehler: Bezeichner 'CProject'
    

    könnte mir da jemand helfen?

    danke im vorraus...



  • Hast Du die Header Datei in Dein Projekt eingebunden?



  • ja, die ist eingebunden...



  • Ist den CProject in der Header bekannt?
    Gib doch mal ein wenig Code von der Header rüber.



  • also hier mal ein bisschen code:

    das ist die .h der klasse CProject

    ref class CProject
    {
    	private:
    		//Membervariablen
    		//
    	    System::String^ width;
    		//double height;
    
    	public:
    		//Konstruktor
    		//
    		CProject();
    		CProject(System::String^ width);
    
    };
    
    };
    

    das die cpp dazu:

    //Includes 
    //
    #include "stdAfx.h"
    #include <iostream>
    #include "FormNewProjectDialog.h"
    #include "functions.h"
    
    using namespace std;
    
    /*************************************************************************************
    *Funktionen zur Klasse: CProject
    *************************************************************************************/
    
    CProject::CProject(System::String^ width)
    {
    	this->width = width;
    }
    

    und hier der aufruf in der form.h :

    private: System::Void getNewProjectStartSettings(System::Object^  sender, System::EventArgs^  e) {
    			 CProject^ prj = gcnew CProject(this->liefereAdresse());
    
    			 //CProject^ prj = gcnew CProject();
    
    			 }
    

    und das die includes der form.cpp

    #include "StdAfx.h"
    
    #include "functions.h"
    #include "FormNewProjectDialog.h"
    

    ich hoffe ich hab alles 🙂



  • Ich habe jetzt erstmal alles in die Hauptdatei gepackt.
    Hoffe das hilft Dir?

    #include "stdafx.h"
    
    using namespace System;
    
    ref class TestKlasse 
    { 
        private: 
            //Membervariablen 
            // 
            String^ width; 
            //double height; 
    
        public: 
            //Konstruktor 
            // 
            void CProject(); 
            void CProject(String^ width); 
    
    };
    
    void TestKlasse::CProject()
    {
    }
    
    void TestKlasse::CProject(String^  width)
    {
    }
    
    int main(array<System::String ^> ^args)
    {
    	TestKlasse^ behaelter1;
    
    	//die Instanzen erzeugen und initialisieren
    
    	behaelter1 = gcnew TestKlasse(); 
    
         return 0;
    }
    


  • Danke für den Code. geht auch wenn ich alles ineine datei schreibe.hab ich auch schon probiert...

    ich denke das problem bei mir ist, dass ich irgendwie falsch die header einbinde...
    denn wenn ich die reinfolge der includes ändere ändern sich auch die anzahl und art der fehlermeldungen 🙂

    iin welcher reinfolge bzw. was muss man den alles includen...?



  • am besten alle +.h-Files in die stdafx reinschreiben, die wird in allen anderen Dateien dann ja standardmässig includiert (wenn man mit dem Klassenasistenten was zusammenbastelt)



  • Da gibt es eigentlich keine Regel.
    Das einbinden der Header ist genau das gleiche, als wenn der Code an dieser Stelle steht.
    Folgendes Projekt funktioniert genau so, ist halt nur sauber, da eine eigene Header angelegt und eingebunden wurde.

    Hier die Header "CProjektHeader.h":

    using namespace System;
    
    ref class CProjekt 
    { 
        private: 
            //Membervariablen 
            // 
            String^ width; 
            //double height; 
    
        public: 
            //Konstruktor 
            // 
            void CProject(); 
            void CProject(String^ width); 
    
    };
    
    void CProjekt::CProject()
    {
    }
    
    void CProjekt::CProject(String^  width)
    {
    }
    

    Und hier die CProgramm.cpp "

    #include "stdafx.h"
    #include "CProjektHeader.h"
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
    	CProjekt^ proi;
    
    	//die Instanzen erzeugen und initialisieren
    
    	proi = gcnew CProjekt(); 
    
         return 0;
    }
    

    NewtonsLaw schrieb:

    am besten alle +.h-Files in die stdafx reinschreiben, die wird in allen anderen Dateien dann ja standardmässig includiert (wenn man mit dem Klassenasistenten was zusammenbastelt)

    Das ist zwar der einfachste und bequemste Weg, würde ich aber nicht empfehlen, da das Projekt auf kurz oder lang unübersichtlich wird.



  • ok also ich habs jetzt hinbekommen!

    Danke an alle !!!


Anmelden zum Antworten