VC++ 2008: Aufrufendes Objekt an Konstruktur einer neuen Klasse übergeben



  • Hallo!

    Bin relativ unerfahren mit c++ und habe folgendes Problem:

    Ich möchte von einer windows Form "Form1" aus eine Instanz einer neuen Komponentenlasse "NeueKlasse" erzeugen und dem Konstruktor der neuen Klasse eine Referenz zum aufrufenden Objekt übergeben, so dass ich von dem neu erzeugten Objekt aus auf öffentliche Methoden meines Form1 objekts zugreifen kann.

    Habe es folgendermaßen Probiert

    //----------------------------------------------------- Datei Form1.h

    // Erzeugung eines neuen Objekts im Konstruktor von Form1

    NeueKlasse^ neu = gcnew NeueKlasse(this);

    ....

    // öffentliche Methode:
    public: System::Void setWert1(System::Int32 wert){

    this->vScrollBar1->Value=wert;
    }

    //----------------------------------------------------- Datei NeueKlasse.h:

    #include "Form1"

    ...

    // Konstruktor neue klasse
    public:
    NeueKlasse(Form1^ aufrufer)
    {
    InitializeComponent();

    // jetzt soll der zugriff auf die öffentliche methode des aufrufenden objekts erfolgen
    aufrufer->setWert1(1);
    }
    NeueKlasse(System::ComponentModel::IContainer ^container)
    {

    container->Add(this);
    InitializeComponent();
    }

    Ich bekomme beim compilieren folgende Fehlerausgabe

    error C2061: Syntaxfehler: Bezeichner 'Form1'
    error C2065: 'aufrufer': nichtdeklarierter Bezeichner
    error C2227: Links von "->setwert1" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
    error C2664: Konvertierung des Parameters 1 von 'Projekt::Form1 ^const ' in 'System::ComponentModel::IContainer ^' nicht möglich
    Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    momentan stehe ich etwas auf dem Schlauch...
    Wollte die Funktionalitäten der neuen Klasse nur ungern in meine Form1 einfügen...

    Danke im Voraus!

    Gruß
    DaFreek



  • Probier mal #include "Form1**.h**"
    Simon

    BTW: Du programmierst da C++/CLI, nicht C++. Das ist ein Unterschied!



  • Schreib mal...

    #include "Form1.h"
    

    Bitte benutze Code-Tags, lässt sich netter lesen.

    Gruß, Doug_HH

    Edit/ Zu spät 🙂


Anmelden zum Antworten