Dekleration einer zusätzlichen Klasse



  • geile Antwort! Sieht so aus als ob dus voll drauf hast!



  • Nochmal anders gefragt: Kann ich dann überhaupt noch aus Form1.h auf diese Klasse direkt zugreifen, oder geht das dann nur noch über die source-Datei



  • Du solltest Deklaration ind Implementierung trennen. Das eine gehört in die h-Datei, das andere in die cpp-Datei!

    Leider macht dies der WinForms-Design falsch... das ist u.a. *ein* Grund warum C++/CLI vollkommen falsch für sowas ist...



  • OK... aber wie bekomme ich den Eintrag aus dem Konstaruktor von Form1 weg? den kann ich ja schlecht in die cpp Datei auslagern, oder!?

    public ref class Form1 : public System::Windows::Forms::Form
    {
      public:
        Form1(void)
        {
          InitializeComponent();
          parameter = gcnew array<PARAMETER^>(100);
        }
    
      protected:
      ...
    


  • ok, wo ist mein denkfehler?

    in Form1.h habe ich jetzt als Konstruktor

    Form1(void);
    

    in Form1.cpp habe ich

    #include "parameter.h"
    using namespace test;
    
    [STAThreadAttribute]
    
    public: array<PARAMETER^>^ parameter;
    
    int main(array<System::String ^> ^args)
    {
    	...
    }
    
    Form1()
    {
      InitializeComponent();
      parameter = gcnew array<PARAMETER^>(100);
    }
    

    und dann habe ich jetzt noch einen neuen Header: parameter.h worin die Klasse deklariert ist:

    namespace test {
    
    public ref struct PARAMETER 
    { 
    	PARAMETER () 
    	{ 
    		xxx = gcnew array<String^>(100); 
    
    	} 
    	public: 
    		array<String^>^ xxx; 			
    }; 
    }
    


  • Und was geht denn jetzt nicht?
    Fehlermeldung?



  • In folgender Zeile in Form1.cpp

    #include "parameter.h"
    using namespace SimPack_auto;
    
    [STAThreadAttribute]
    
    public: array<PARAMETER^>^ parameter;
    

    kommt folgende Fehlermeldung

    error C3145: 'parameter' : global or static variable may not have managed type 'cli::array<Type> ^'



  • Mach parameters zu einem Member deiner Form1 Klasse.



  • danke für die Antwort! wäre super wenn du mir da noch auf die sprünge helfen würdest...Wie mache ich parameter zum member von form1?

    Danke



  • Nichts für ungut, aber bevor du mit C++/CLI und WinForms arbeitest, solltest du ersteinmal reines C++ lernen (Du versuchst gerade einen Marathon zu laufen, kannst aber noch nichteinmal krabbeln 😉



  • hab jetzt meine PARAMETER Klasse wie folft deklariert:

    public ref struct PARAMETER : public Form1
    

    funktioniert aber trotzdem nicht...



  • Obwohl ich C++/CLI nicht die richtige Sprache halte um mit Programmieren zu beginnen oder überhaupt eine Applikation zur erstellen, bin ich nicht der Meinung, dass man zuerst C++ lernen sollte.
    Es ist eine andere Sprache und hat nicht viel gemeinsam. Wozu also C++ lernen?

    Hier zu noch der bekannte Thread für den Fragesteller:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html

    Meine Empfehlung ist ganz einfach auf C# umzusteigen.

    Simon



  • bbb schrieb:

    hab jetzt meine PARAMETER Klasse wie folft deklariert:

    public ref struct PARAMETER : public Form1
    

    funktioniert aber trotzdem nicht...

    Ist auch komplett falsch.

    Hier mal ein Ansatz:

    public ref class Form1 : public System::Windows::Forms::Form 
    { 
    private:
       array<PARAMETER^>^ parameter;
    
    public: 
      Form1(void) 
      { 
        InitializeComponent(); 
        parameter = gcnew array<PARAMETER^>(100); 
      }
    };
    


  • Danke @theta. Hab den Anatz gleich ausprobiert, aber jetzt kommt wieder folgender Fehler

    error C2065: 'PARAMETER' : undeclared identifier



  • Bei der Fehlermeldung wird die Dekleration markiert...

    public ref class Form1 : public System::Windows::Forms::Form 
    {
      private:
        array<PARAMETER^>^ parameter;
    


  • theta schrieb:

    Hier mal ein Ansatz:

    public ref class Form1 : public System::Windows::Forms::Form 
    { 
    private:
       array<PARAMETER^>^ parameter;
    
    public: 
      Form1(void) 
      { 
        InitializeComponent(); 
        parameter = gcnew array<PARAMETER^>(100); 
      }
    };
    

    Gehört dieser Ansatz in die header- oder in die cpp-Datei? Ich hab ihn in die header Datei geschrieben. Hier kann ich aber parameter.h über include nicht einbinden, oder?



  • alles klar, hab die Fehler gefunden...jetz läuft die Sache wieder!!!

    Danke für eure Ausdauernde Hilfe 😃


Anmelden zum Antworten