Wie Implementation einer Klasse in dem Hauptprogramm verwenden?
-
Fenixx schrieb:
Sorry, da war ich wohl ein wenig zu spät.
Danke für den Hinweis. Nun habe ich den Code dagehend geändert, dass ich nur noch den Standardkonstruktor zur Verfügung habe und es funktioniert.Eine Frage noch: Kann ich dann gar nicht einen Konstruktor überladen wie in Java?
Doch kannst du natürlich aber nur dahingehent das die Konsturktoren sich unterscheiden.
Konstruktor() Konstruktur(int a = 0) // Geht nicht das sie sich nicht entsprechend unterscheiden Konstruktor(int a) // Geht da sie sich nicht entsprechenMfg Marco
-
Danke für eure bisherige Hilfe und Geduld.
Mein Code sieht nun so aus:
Sum.h:Sum(); // der Default-Konstruktor Sum(int a); // weiterer Konstruktor mit ParameterSum.cpp:
Sum::Sum(int a) { m_erg = a; }Wenn ich nun weiß, wie ich in meinem Hauptprogramm eine Klasse mit dem Default-Konstruktor und eine mit dem Parameter erzeugen kann, nerve ich euch (vorerst) nicht mehr.

Vorher wars ja so für den DefaultKonstruktor:
Sum s1;Wie siehts nun aus für die Initialisierung einer Klasse mit dem Default-Konstruktor und einer Initialisierung mit einem Parameter?
Gruß
-
StandardCtor wie dein bisheriger also:
Sum s;mit Parameter
int a = 100 Sum s(a);
-
Genau das hab ich so gemacht:
#include <iostream> #include "Sum.h" // makes our lives easier... using namespace std; //Sum definieren Sum s; int main() { int erg = 0; int a = 2; int b = 3; erg = s.sumMethod(a,b); printf("Das Ergebnis %d\n",erg); }Allerdings frage ich mich dann, wieso folgende Fehlermeldung bei mir erscheint:
undefined reference to `Sum::Sum()
-
Wenn du einen StandardCtor deklarierst solltest du den auch definieren hast du das gemacht?
-
Ok, den hatte ich vergessen. Ich bins halt von Java gewohnt, dass der da ist, obwohl ich ihn nicht extra deklarieren brauche.
Vielen Dank für eure Geduld.
-
edit: missverständnis
-
Ne, der Standard-Ctor wird nur erstellt, wenn kein anderer/eigener Ctor deklariert wird.
-
Ahh stimmt...sorry mein Fehler. Ja naklar nur wenn kein andere deklariert ist.
-
Du solltest ausserdem die Initialisierungsliste verwenden.
Brauchst du überhaupt zwei Konstruktoren, reicht ein Defaultparameter nicht?
// Deklaration in der Klasse - Defaultparameter Sum(int a = 0); // Definition ausserhalb Sum::Sum(int a) : m_erg(a) // <-- Initialisierungsliste - mehrere Member durch Komma trennen { }