Problem beim Arbeiten mit Konstruktoren

LadyMarion

Mitglied
Hallo,

ich steh grad irgendwie auf der Leitung... Es geht um Konstruktoren.

Ich habe ein Programm geschrieben, das ein Textfile erzeugt und innerhalb eines bereits bestehenden Programms aufgerufen wird.

Jetzt kam aber noch ein weiteres Programm dazu, das eigentlich ähnliche Funktionen hat und nun gibt es einiges doppelt.

Jetzt wollte ich die Initialisierung mit Hilfe von Konstruktoren erledigen, so dass es für beide Programme funktioniert, aber nur einmal aufgerufen werden muss. Und genau da liegt das Problem. Irgendwie komm ich mit den Konstruktoren nicht wirklich klar.:confused:

Hier ein Beispiel:
Code:
// Meine Klasse
class Beispiel
{
public:
Beispiel(); // Constructor
~Beispiel(); // Destructor

void testfunktion(string kreuz, int i, string gitter, string typ);
void weitereFunktion(string kreuz, string quer, string verzeichnis, int n, int i, string gitter, string typ, string name);
};

Code:
// Mein 1. Programm:
Beispiel::Beispiel()
{ }

Beispiel::~ Beispiel()
{ }

void Beispiel::testfunktion(string kreuz, int i, string gitter, string typ) {

    Beispiel Testfall;

    Testfall.kreuz = kreuz;
    Testfall.gitter = gitter;
    Testfall.aktiv = i + 1;
    Testfall.typ = typ;

    Testfall.eins = geteins();
    Testfall.zwei = getzwei();
    Testfall.drei = getdrei();

    Testfall.vier = Testfall.eins / Testfall.zwei;
    Testfall.fuenf = Testfall.zwei / Testfall.drei;
    Testfall.sechs = Testfall.vier * Testfall.fuenf;

    Testfall.h = getH(i,0);
}

Code:
// Wird folgendermaßen in der main-Funktion aufgerufen:
Beispiel ABCD;
ABCD.testfunktion(kreuz, i, gitter, typ);

Code:
// Mein 2. Programm:
Beispiel::Beispiel()
{ }

Beispiel::~ Beispiel()
{ }

void Beispiel::weitereFunktion(string kreuz, string quer, string verzeichnis, int n, int i, string gitter, string typ, string name) {

    Beispiel Test;
    Test.kreuz = kreuz;
    Test.quer = quer;
    Test.verzeichnis = verzeichnis;
    Test.ecken = n;
    Test.gitter = gitter;
    Test.aktiv = i + 1;
    Test.typ = typ;
    Test.name = name;

    Test.eins = geteins();
    Test.zwei = getzwei();
    Test.drei = getdrei();

    Test.vier = Test.eins / Test.zwei;
    Test.fuenf = Test.zwei / Test.drei;
    Test.sechs = Test.vier * Test.fuenf;

    Test.h = getH(i,0);
}

Code:
wird folgendermaßen in der main-Funktion aufgerufen:
Beispiel ABCD;
CFXpre.weitereFunktion(kreuz, quer, verzeichnis, n, i, gitter, typ, name);

Die Beispiele zeigen jetzt jeweils nur Ausschnitte mit den betreffenden Teilen.
In den beiden Programmen kommt also einiges doppelt vor, lediglich bei dem 2. Programm werden mehr Parameter übergeben und initialisiert.
Wenn ich das Ganze jetzt mit Konstruktoren realisieren will, dann muss es doch irgendwie so gehen:

In der Klasse brauche ich also zusätzlich zum Default-Konstruktor mehr Konstruktoren:
Code:
Beispiel();
Beispiel(string kreuz, int i, string gitter, string typ);
Beispiel(string kreuz, string quer, string verzeichnis, int n, int i, string gitter, string typ, string name);

Dann stünde ja in meinem 1. Programm folgendes:
Code:
Beispiel::Beispiel() {
    Beispiel::eins = geteins();
    Beispiel::zwei = getzwei();
    Beispiel::drei = getdrei();

    Beispiel::vier = Beispiel::eins / Beispiel::zwei;
    Beispiel::fuenf = Beispiel::zwei / Beispiel::drei;
    Beispiel::sechs = Beispiel::vier * Beispiel::fuenf;

    Beispiel::h = getH(i,0);
}

Beispiel::Beispiel(string kreuz, int i, string gitter, string typ) {
    Beispiel::kreuz = kreuz;
    Beispiel::gitter = gitter;
    Beispiel::aktiv = i + 1;
    Beispiel::typ = typ;
}

Beispiel::~ Beispiel()
{ }

void Beispiel::testfunktion() {
// hier stehen jetzt also nur noch die direkten Aufrufe, um das Textfile zu erzeugen
}

Jetzt müssen dann aber doch irgendwie mehrere Objekte beim Aufruf erzeugt werden, oder? Und wie kann das im 2. Programm dann auch verwendet werden?

Vielleicht könnt Ihr mir ja etwas auf die Sprünge helfen.
Danke!
 
Zurück