Klassen Problem
-
Hi,
ich hab das Problem, das ich bei dem unteren Code einen Fehler bekomm.
[C++ Error] Termin.cpp(12): E2294 Structure required on left side of . or .*Wo liegt der Fehler, bzw wieso kann ich das nicht mit "Termin()" machen und dann einfach was zuweise, oder liegt der Fehler wo anders?
class Termin { public: Termin(const int datum); Termin(); ~Termin(); int GetDatum() const ; void SetDatum(const int datum); private: int itsDatum; }; Termin::Termin(const int datum) :itsDatum(datum) {} Termin::Termin() :itsDatum(5) {} Termin::~Termin() {} int Termin::GetDatum() const { return itsDatum; } void Termin::SetDatum(const int datum) { itsDatum = datum; } int main() { Termin Eins(207); Termin Zwei(); //Error: Stricture rewuired on left side of . or .* cout << " 1: " << " " << Eins.GetDatum(); cout << " 2: " << " " << Zwei.GetDatum(); wait(); // ist in topse.h definiert return 0; }
-
Soll heißen:
Termin Zwei;class Termin { int m_data; public: Termin(int date = 5) : m_data(data) {} public: int get_datum() const { return m_data; } void set_datum(int date) { m_data = data; } };Wäre evtl. etwas besser bzw. kürzer ...
-
danke für die schnelle Antwort.
Ist natürlich so Praktischer
Allerdings funktioniert das leider nicht. Da
datanicht deklariert ist.
Ich habs mal so gemacht, allerdings bekomme ich nun den Error immer wenn ich nur
Termin() aufrufStructure required on left side of . or .*class Termin { int m_data; public: Termin(int date = 5) : m_data(data) {} public: int data; int get_datum() const { return m_data; } void set_datum(int data) { m_data = data; } } int main() { int input, input2; cout << "Bitte Datum eingeben: "; cin >> input; cout << "Bitte Datum2 eingeben: "; cin >> input2; Termin Eins(2); // ich kann hier nicht Termin Eins() aufrufen Termin Zwei(2); // ich kann hier nicht Termin Zwei() aufrufen Eins.set_datum(input); Zwei.set_datum(input2); cout << " 1: " << " " << Eins.get_datum(); cout << " 2: " << " " << Zwei.get_datum(); wait(); return 0; }Gruß Folcan
-
Lass die Klammern mal weg. Das brauchst du beim default-konstruktor nicht. Der Compiler denkt sonst, das ist eine Funktionsdeklaration.
AlsoTermin Eins;Im Konstruktor ist lediglich ein Schreibfehler. Der Parameter muß auch data heißen. Nach der deklaration von Termin fehlt noch ein Semikolon.
-
Upps den hab ich woll übersehen 
thx. Funktioniert natürlichGruß Folcan
-
class Termin { int m_data; public: Termin(int data = 5) : m_data(data) {} public: int get_datum() const { return m_data; } void set_datum(int data) { m_data = data; } };tss ein a statt e ...