Announcement

Collapse
No announcement yet.

blutige Anfängerfrage: Label setzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • blutige Anfängerfrage: Label setzen

    Hallo Community

    Ich weiß, meine Frage ist vielleicht etwas dumm, aber ich habe in der MSDN und im Internet geguckt und ich finde keine Antwort. Dabei muss es doch so einfach gehen.

    Habe mit VS 2005 C++ eine neue 'Windows-Forms-Anwendung' erstellt. Dann habe ich mit der Toolbox ein Label auf die Form gezogen.

    Wenn ich jetzt im hauptgrogramm.cpp schreibe: label1->Text = "bla", dann gibt mir der Compiler: "nichtdeklarierter Bezeichner".

    habe schon Alles versucht, label1 in Form1.h 'public' anstatt 'private' deklariert, Alle möglichen Kombinationen von "::" , "->", ".", aber nix....

    Vielen Dank für die Antwort im Voraus

  • #2
    Eingrenzung...

    ok, das war vielleicht etwas allgemein.

    Also, um das Problem einzugrenzen:

    form1.h:

    public ref class Form1 : public System::Windows::Forms::Form
    {


    public:

    void setLabel1 (String^ val)
    {
    this->label1->Text = val;
    }
    ...
    private: System::Windows::Forms::Label^ label1;
    ...
    }

    aus test.cpp will jetzt aufrufen:

    Form1::setLabel1("bla");


    Dann meldet mir der Compiler:

    1>.\test.cpp(83) : error C2352: 'test::Form1::setLabel1': Unzulässiger Aufruf einer nicht statischen Memberfunktion

    Ich will einfach nur dieses blöde Label auf Form1 ändern! Wie geht das? Pleeeeaaaaaase help!

    Comment


    • #3
      och kommt schon, irgendjemand erbarme sich... 40 Hits... Ich weiß, es ist eine Anfängerfrage, aber ich bin langsam am Verzweifeln. Habe früher schon mit C++ gearbeitet, bin wieder etwas aus der Übung. Wenn ich die Funktion static mache, dann geht das irgendwie auch nicht....

      Comment


      • #4
        Wenn keiner da ist, der sich mit VC auskennt, dann ist keiner da. Die Anzahl der Hits sagt da wenig, nutze den C++Builder (weil einfacher) und schaue trotzdem hier rein.

        Aber mal soviel


        Was bedeutet das ^ in der Deklaration?? ("void setLabel1 (String^ val)"); wohl irgendwas spezifisches von MS

        Ist in der test.cpp die fom1.h includiert?

        Eine Methode einer Klasse wird nicht über :: aufgrufen, sondern über -> oder .

        Je nachdem ob du einen Zeiger hast (dann ->) oder nicht
        Christian

        Comment


        • #5
          Hallo Christian,

          danke für die Antwort.

          Ich benutze zum ersten Mal Visual Studio 2005 von MS und muss mich dort erstmal einarbeiten.

          Was das '^' bedeutet weiss ich auch nicht, aber ein String muss dort so deklariert werden. Wenn jemand weiss, wieso, kann er das ja mal posten.

          Ich habe das Problem jetzt umgangen, indem ich meinen Hauptcode nicht in die test.cpp schreibe, sondern direkt in die Klasse, denn dort ist das Label über this->label1->Text zugreifbar.

          Ich muss mich nochmal genauer über die Klassen und Zugriff schlau lesen.

          Danke erstmal,

          F.

          Comment


          • #6
            Hi, ich hab leider auch keine Antwort, aber das gleiche Problem. Habe früher mit C++Builder gearbeitet, bin dann aber auf Vista umgestiegen und da lief mein C++Builder 5 nicht mehr. Also zwangsläufig VisualC++5. Es sieht so aus als müsste man da alles in Form1.h schreiben... aus Form1.cpp kann ich rein gar nichts aufrufen. Es ist echt zum Verzweifeln. Diese .NET -Sache verkompliziert eine sowieso schon komplizierte Programmiersprache noch weiter.

            Comment

            Working...
            X