Codeauslagerung



  • Hallo Forum,

    ich beschäftige mich erst seit kurzem mit Visual C++ 2008 Express Edition und möchte gerne zur Übung folgendes bewerkstelligen:

    1. Erstellen eines Formulars mit zwei Textboxen und einem Button --> ist kein Problem
    2. Bei Betätigen des Buttons sollen die beiden in die Textboxen eingegebenen Werte addiert werden --> kein Problem in der Klasse/header-Datei des Formulars.
    3. Jetzt möchte ich aber die Berechnungsarithmetik (klingt toll für eine einfache Addition! ;-)) in eine andere Datei auslagern, was bei komplexeren Berechnungen wohl Sinn macht. Wie ist die beste Vorgehensweise, um die Eingabewerte aus der Formularklasse an eine Klasse/Datei zu übergeben?

    Gruß

    CS



  • Hallo,

    pack die Berechnungen innerhalb Deines Projektes in eine eigene Klasse (z.B. als static Funktion) und rufe die gewünschten Berechnungen darüber auf. Im nächsten Schritt alles in eine DLL packen um das ganze auch programmübergreifend nutzen zu können.

    #pragma once
    
    ref class CMyMath
    {
    public:
    	static int Add(const int %v1, const int %v2) { return v1 + v2; }
    	CMyMath(void);
    };
    
    #include "mymath.h"
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
    	int z1 = 17, z2 = 4;
    	Console::WriteLine(CMyMath::Add( z1, z2 ) );
        return 0;
    }
    

    Gruss
    foodax



  • Hallo foodax,

    habe für die Berechnung eine eigene Klasse (static Funktion) in eine neue header Datei geschrieben, dies auch mit include eingebunden. Jetzt bekomme ich aber beim compilieren folgende Fehlermeldung:

    error C2653: 'multi': Keine Klasse oder Namespace
    error C3861: "mult": Bezeichner wurde nicht gefunden.

    Der Aufruf erfolgt mit:

    multi::mult(x,y );

    😕



  • Hallo,

    poste vielleicht mal den Quellcode Deiner Klasse.

    Gruss
    foo



  • Das ist meine Klasse:

    #pragma once

    public ref class multi
    {
    public:
    static int mult(const int %v1, const int %v2) { return v1 * v2; }
    multi(void);
    };

    Ich möchte die Berechnung bei Knopfdruck "starten" und das Ergebnis eigentlich gleich in einem Lable meines Formulars ausgeben:

    :
    private: System::Void multi_button_Click(System::Object^ sender, System::EventArgs^ e) {
    erg_lable->Text = z.ToString(multi::mult(x,y ));
    }
    :

    Danke für die bisherigen Bemühungen, ich liege mit der Programmierung noch etwas im Clinch...

    Gruß

    CS



  • Hallo,

    das sollte so funktionieren. Die Fehlermeldung die Du beim Übersetzen erhälst (error C2653: 'multi': Keine Klasse oder Namespace, error C3861: "mult": Bezeichner wurde nicht gefunden), macht für mich keinen Sinn. Vermutlich liegt das Problem an einer ganz anderen Stelle.

    Gruss
    foo



  • Hmm, na ich werde noch etwas rumknobeln...
    Schönen Sonntag noch!


Anmelden zum Antworten