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()


  • Mod

    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!


Log in to reply