mit externer Klasse auf public WindowsForm Funktion zugreifen.



  • Hallo,

    ich möchte aus einer von Form.h erstellten Klasseninstanz(Test_Klasse) eine Funktion(BeispielFunktion) aufrufen, die sich wiederrum in Form.h befindet.

    Beim erstellen der Instanz, gebe ich eigentlich via this die Adresse der Form1-Klasseninstanz mit. Nur kann ich nun in meiner Klasse nicht wie üblich auf die public Funktion innerhalb von Form.h zugreifen.
    Geht das überhaupt, bzw. was mache ich falsch? 😕

    Form1.h

    #pragma once
    
    #include "Test_Klasse.h"
    
    namespace Beispiel {
    
    	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
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			klasse = gcnew Test_Klasse(this);
    		}
    
    	public:
    		void BeispielFunktion(void) {
    			// Mach irgendetwas
    		}
    
    	private:
    		Test_Klasse^ klasse;
    
    ...
    

    Test_Klasse.h

    #pragma once
    
    using namespace System;
    using namespace System::Windows::Forms;
    
    ref class Test_Klasse
    {
    public:
    	Test_Klasse(Form^ x);
    
    private:
    	Form^ form_rev;
    };
    

    Test_Klasse.cpp

    #include "StdAfx.h"
    #include "Test_Klasse.h"
    
    Test_Klasse::Test_Klasse(Form^ x)
    {
    	this->form_rev = x;
    	// Funktionsaufruf in Form1.h
    	//form_rev->BeispielFunktion();
    }
    


  • #pragma once
    
    using namespace System;
    using namespace System::Windows::Forms;
    
    /* Oder mittels include */
    namespace Beispiel
    {
        ref class Form1;
    }
    
    ref class Test_Klasse
    {
    public:
        Test_Klasse(Beispiel::Form1^ x);
    
    private:
        Beispiel::Form1^ form_rev;
    };
    
    #include "StdAfx.h"
    #include "Test_Klasse.h"
    
    Test_Klasse::Test_Klasse(Beispiel::Form1^ x)
    {
        this->form_rev = x;
        // Funktionsaufruf in Form1.h
        form_rev->BeispielFunktion();
    }
    


  • Also die Referenzübergabe an die Instanz klappt wunderbar, nur kann ich die eigene Funktion nicht aufrufen.

    form_rev->BeispielFunktion();
    

    Wenn ich mir im Debugmodus den Inhalt der Referenz anschaue, sehe ich alle erstellten Forms, nur halt nicht die BeispielFunktion.


Anmelden zum Antworten