Objekt einer klasse
-
hi
wieso geht folgender code nicht?
main.cpp
#include <iostream> #include "rand.h" int main() { rand r; std::cout << r.getRand() << std::endl << r.getRand() << std::endl << r.getRand() << std::endl << r.getRand() << std::endl; return 0; }
rand.h
#ifndef RAND_H #define RAND_H //#include <random> class rand { public: rand(); virtual ~rand(); int getRand(); protected: private: }; #endif // RAND_H
rand.cpp
#include "rand.h" rand::rand() { //ctor } rand::~rand() { //dtor } int rand::getRand() { return 1; //nur zum testen }
wenn ich das ausführe kommt:
/home/johannes/Dropbox/Programming/C++/Rechnen/main.cpp|10|Fehler: expected »;« before »r«| /home/johannes/Dropbox/Programming/C++/Rechnen/main.cpp|10|Warnung: Anweisung ist eine Referenz, kein Aufruf, zur Funktion »rand« [-Waddress]| /home/johannes/Dropbox/Programming/C++/Rechnen/main.cpp|10|Warnung: Anweisung hat keinen Effekt [-Wunused-value]| /home/johannes/Dropbox/Programming/C++/Rechnen/main.cpp|12|Fehler: »r« wurde in diesem Gültigkeitsbereich nicht definiert| ||=== Build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===|
und markiert wird die zeile "rand r;" in main()
-
Ich fürchte, da hast du eine Namenskollision mit der Funktion der Standardbibliothek rand. Die Standardbibliothek sollte zwar die ganzen alten C-Funktionen in den std-Namensraum packen, jedoch darf sie die Namen auch im globalen Namensraum deklarieren.
-
Ok. hab ich mir schon fast sowas gedacht.
Danke!