struct array



  • Egal wie ich es hindreh, ich weiß nicht wie ich ohne static um die Fehlermeldung herumkommen soll.

    only static data members can be initialized inside a ref class or value type

    Gibt es denn keine möglichkeit so ein Array irgendwie global zu deklarieren?



  • Das musst Du im Konstruktor tun.
    Lass das static weg. Es ist falsch!
    Simon



  • Korrekt wäre:

    ref struct PARAMETER 
    { 
        PARAMETER ()
        {
            Radstand = gcnew array<String^>(100); 
        }
    public: 
        array<String^>^ Radstand;
    };
    
    ref class Foo
    {
    private:
      array<PARAMETER^>^ parameter;
    public:
      Foo()
      {
        parameter = gcnew array<PARAMETER^>(100);
      }
    
      void Bar()
      {
          parameter[0] = gcnew PARAMETER();
          parameter[0]->Radstand[0] = "para[0,0]"; 
          parameter[0]->Radstand[1] = "para[0,1]"; 
          parameter[1] = gcnew PARAMETER();
          parameter[1]->Radstand[0] = "para[1,0]"; 
          parameter[1]->Radstand[1] = "para[1,1]"; 
          System::Diagnostics::Debug::WriteLine(parameter[0]->Radstand[0]); //Ausgabe: para[0,0]"; 
          System::Diagnostics::Debug::WriteLine(parameter[0]->Radstand[1]); //Ausgabe: para[0,1]"; 
          System::Diagnostics::Debug::WriteLine(parameter[1]->Radstand[0]); //Ausgabe: para[1,0]"; 
          System::Diagnostics::Debug::WriteLine(parameter[1]->Radstand[1]); //Ausgabe: para[1,1]";
      }
    };
    

    Wobei ich mich allerdings frage, warum DU nicht C# verwendest oder zumindest LIst<...>



  • theta schrieb:

    Das musst Du im Konstruktor tun.
    Lass das static weg. Es ist falsch!
    Simon

    OK. Kannst Du mir das evntl. genauer erklären? Müssen alle statics weg oder nur das in:

    public: static array<PARAMETER^>^ parameter = gcnew array<PARAMETER^>(100);
    

    Wie ist das mit dem Konstruktor genau gemeint?
    Danke schon mal für die Antwort.

    Gruß
    Björn



  • DAnke @Jochen Kalmbach
    Ich werde den Ansatz gleich mal ausprobieren. Ich würde auch lieber C# oder Visual Basic benutzen. Bin aber gerade in einem Industriepraktikum und hab nichts anderes zur Verfügung.

    Gruß
    Björn



  • @Jochen Kalmbach
    ich hab gerade versucht Deinen Ansatz zu implementieren, bekomme jetzt aber an anderer stelle folgende Fehlermeldung:

    illegal reference to non-static member xxx::Form1::parameter'

    es wird folgende Zeile markiert:

    if(ModellRadst != parameter[trackCounter]->Radstand[i])
    

    ModellRadst wurde wie folgt deklariert:

    static String^ ModellRadst = "";
    

    Hängt das dann auch wieder mit dem static zusammen, oder kommt das jetzt nochmal wo anders her?



  • @Jochen Kalmbach
    Juhu!!!!!! Es hat geklappt! vielen dank für eure schnelle Hilfe!!

    Gruß
    Björn



  • Björn77 schrieb:

    Ich würde auch lieber C# oder Visual Basic benutzen. Bin aber gerade in einem Industriepraktikum und hab nichts anderes zur Verfügung.

    Dann verweise mal Deinen Betreuer auf Folgenden Link:
    http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/



  • Jochen Kalmbach schrieb:

    Dann verweise mal Deinen Betreuer auf Folgenden Link:
    http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/

    Jochen, dass nervt...

    Und der Bericht ist einfach haltlos und Blödsinnig...

    Nur weil die eine Ente nicht schwimmen kann, sollen die anderen Enten auch nicht schwimmen können, es liegt ja am Wasser und nicht an der Ente...tzzz

    Mit anderen Worten, nur weil Du mit C++/CLI Deine Schwierigkeiten hast, müssen alle anderen diese auch haben.



  • 😉



  • 🕶



  • theta schrieb:

    🕶

    Hast Du auch keine eigene Meinung mehr!?

    Theta: "Ich schließe mich Ihrer Meinung an, Chef."
    Chef: "Ich habe doch noch gar nichts gesagt."

    Der Ja-Sager



  • Schreib doch bitte mal ein "Gegenbericht" und erzähle uns die Vorteile von WinForms zusammen mit C++/CLI.

    Ich warte.



  • Der einzige Punkt der sich auf WinForms in Deinem Bericht stützt, ist Punkt 1.

    Alle andern Punkte nicht.

    Und Du bist sicherlich nicht ganz Unschuldig das es weniger C++/CLI Code-Beispiele gibt.
    Leute die grade mit der Programmierung anfangen sind selbstverständlich verunsichert und steigen natürlich auf C# um, wobei man dann auch gleich VB nehmen könnte.

    Ich hab große Anwendungen in C++/CLI geschrieben, die super laufen.

    Und die MFC ist auf sicher auch kein leichter Einstieg für Anfänger und die MFC wurde auch jedes mal als C++ verkauft, was natürlich auch Blödsinn ist.
    Selbstverständlich ist die MFC auch schon lange am Ende, die Ära ist vorbei.



  • Ich bin nicht Deiner Meinung.

    Außer das man sehr wohl auch große Anwenungen mit C++/CLI schreiben kann. Nur ich finde dies nicht Sinnvoll.


Anmelden zum Antworten