srand: missing storage class error? / richtige zufallszahlen



  • hallo nochmal!
    Bin mit meiner mp3 playlist ein stückchen weiter und möchte jetzt ermöglichen, die lieder in zufälliger reihenfolge zu bekommen.

    Habe dazu erstmal folgenden Aufruf und Funktionsdeklaration vor die Klasse geschrieben...

    #include "CPlaylist.h"
    #include <stdlib.h>
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <time.h>
    #include <windows.h>
    #include "CSong.h"
    using namespace std;
    
    srand( (unsigned)time( NULL ) );   //damit es richtige zufallszahlen sind
                                       //und nicht bei jedem start die gleichen
    
    int Rand(int n){return rand() % n ;} //Zufallsfunktion
    
    CPlaylist::CPlaylist(string Path, string Name, bool rndm ){
    
    //snip.... jetzt kommen die Funktionsdefinitionen der Klasse
    

    im konstruktor von CPlaylist mische ich dann den <vector> in dem die Titel stehen durch:

    if(random == true){random_shuffle( SongListe.begin( ), SongListe.end( ),pointer_to_unary_function<int, int>(Rand));
    

    Das hat alles gut funktioniert bis ich den srand Aufruf eingebaut habe, den ich so aber schonmal in einem tutorial benutzt habe.
    Ich bekomme den fehler:

    error C2501: 'srand' : missing storage-class or type specifiers

    fehlt da noch irgendein include oder wo steckt das problem?



  • ich würde srand im constructor aufrufen



  • Super!!! Das funzt jetzt. Ich verstehe blos nich warum das nich ging. srand müßte doch auch außerhalb bekannt sein?!?



  • weil das der definitionsbereich ist



  • srand ist ja eine Funktion, die kann man nicht einfach irgendwo aufrufen, sondern immer nur aus einer anderen Funktion heraus.
    Also zum Beispiel in main etc.


Anmelden zum Antworten