Kann der Konstruktor Klassenmethoden aufrufen?
-
Hallo,
zur Übung von Klassen wollte ich mir mal einen Einmaleins-Trainer erstellen.
Klappt auch soweit alles, jedoch wollte ich halt, dass, sobald man das Objekt erstellt, der Konstruktor sozusagen "die Arbeit übernimmt" und er selbstständig klasseneigene Methoden aufruft, ohne dass man sie in der Mainmethode über beispiel.methode(); aufrufen muss. Hier komme ich jetzt nicht weiter.
Die Headerdatei:#ifndef EINMALEINS_H #define EINMALEINS_H #include <string> class Einmaleins { private: int loesungen[10]; std::string aufgaben[10]; unsigned int h, t; public: Einmaleins(); void initialisiere(); void macheAufgaben(); }; #endif /* EINMALEINS_H */Die Source-Datei:
#include <string> #include <iostream> #include <cstdlib> #include <ctime> #include <sstream> #include "einmaleins.h" Einmaleins::Einmaleins() { initalisiere(); } void Einmaleins::initialisiere() { std::cout << "Von wo bis wo sollen Zahlen abgefragt werden?" << std::endl << "Von: "; while (!(std::cin >> this->h)) { std::cout << "Ungültiger Wert. Bitte erneut eingeben!" << std::endl << "Von: "; } std::cout << "Bis: "; while (!(std::cin >> this->t)) { std::cout << "Ungültiger Wert. Bitte erneut eingeben!" << std::endl << "Bis: "; } }Das Problem ist nun folgende Fehlermeldung:
"einmaleins.cpp:10:18: error: 'initalisiere' was not declared in this scope".
Ich hätte natürlich auch die komplette initialisiere()-Methode in den Konstruktor schreiben können, wollte es aber übersichtlich haben.
Kann den Konstruktor keine klasseneigenen Methoden aufrufen, oder was mache ich falsch?Der Code ist auch noch nicht fertig, wollte nur schon mal fragen, wie ich das lösen kann.
Gruß
-
Anonymus42 schrieb:
Einmaleins::Einmaleins()
{
initalisiere();
}void Einmaleins::initialisiere()
-
Nathan schrieb:
Anonymus42 schrieb:
Einmaleins::Einmaleins()
{
initalisiere();
}void Einmaleins::initialisiere()
peinlich

wäre geklärt... danke!
-
Hatte glaube ich schon fast jeder einmal Fehler solcher Art.
-
Nur für die Vollständigkeit: Du kannst aber keine virtuellen Klassen-Methoden aufrufen!
edit: Also zumindest würde nicht das passieren, was man erwarten könnte, da das Objekt noch nicht komplett erzeugt und damit nicht die vtable (Ich weiß, im Standard wird der Begriff vtable nicht erwähnt)...