HOW TO: In C++ in Windows Forms Header eine Methode eines anderen Headers aufzurufen ???



  • Guten Nachmittag,
    ich habe ein Windows Forms Projekt angelegt, und mir dann einen neuen Header gemacht, in dem ich meine Methoden habe. Jetzt möchte ich diese Methoden auf Knopfdruck ausführen. Irgendwie kann ich in der Form kein Objekt erstellen, und die Methode findet er nicht. Die .h Datei zu importieren hat auch nicht geholfen:
    code[/code]

    #pragma once

    namespace RationaleUhr {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Zusammenfassung für Form1
    ///
    /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
    /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
    /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
    /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    /// arbeiten, die diesem Formular zugewiesen sind.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: Konstruktorcode hier hinzufügen.
    //
    }

    protected:
    /// <summary>
    /// Verwendete Ressourcen bereinigen.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::Label^ iClocktime;
    private: System::Windows::Forms::Button^ bStart;
    private: Uhr ^uUhr = gcnew Uhr; //Objekterzeugung // Das gibt nen Error: error C2143 und error C4430
    protected:

    protected:

    private:
    /// <summary>
    /// Erforderliche Designervariable.
    /// </summary>
    System::ComponentModel::Container ^components;

    #pragma region Windows Form Designer generated code
    /// <summary>
    /// Erforderliche Methode für die Designerunterstützung.
    /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    /// </summary>
    void InitializeComponent(void)
    {
    this->iClocktime = (gcnew System::Windows::Forms::Label());
    this->bStart = (gcnew System::Windows::Forms::Button());
    this->SuspendLayout();
    //
    // iClocktime
    //
    this->iClocktime->AutoSize = true;
    this->iClocktime->Location = System::Drawing::Point(110, 79);
    this->iClocktime->Name = L"iClocktime";
    this->iClocktime->Size = System::Drawing::Size(49, 13);
    this->iClocktime->TabIndex = 0;
    this->iClocktime->Text = L"00:00:00";
    //
    // bStart
    //
    this->bStart->Location = System::Drawing::Point(97, 113);
    this->bStart->Name = L"bStart";
    this->bStart->Size = System::Drawing::Size(75, 42);
    this->bStart->TabIndex = 1;
    this->bStart->Text = L"Start";
    this->bStart->UseVisualStyleBackColor = true;
    this->bStart->Click += gcnew System::EventHandler(this, &Form1::bStart_Click);
    //
    // Form1
    //
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System::Drawing::Size(284, 262);
    this->Controls->Add(this->bStart);
    this->Controls->Add(this->iClocktime);
    this->Name = L"Form1";
    this->Text = L"Form1";
    this->ResumeLayout(false);
    this->PerformLayout();

    }
    #pragma endregion
    private: System::Void bStart_Click(System::Object^ sender, System::EventArgs^ e) {
    //hier soll die Methode zeitEin aus der Klasse Uhr ausgeführt werden
    }
    };
    }

    [code="cpp"]

    Vielen Dank schonmal vorher ! 🙂



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du solltest die Deklaration und implementierung von Methoden trennen. Die Deklaration gehört in die h-Datei. Die Implementierung in die cpp-Datei (wenn es die nicht gibt, musst Du sie anlegen). Dann sollte es keine Probleme geben...



  • Zum Einen:

    Uhr ^uUhr = gcnew Uhr(); //und nicht gcnew Uhr;
    

    Zum Anderen: Auch wenn du deine Klasse in einen Header schreibst funktioniert das solang du den header einbindest. Zumindest in deinem Snippet machst du das nicht auch wenn dus sagst. Dann muss es gehen solange Uhr im Header definiert ist.


Anmelden zum Antworten