2016-03-27 11 views
0

Ich bin ein wenig über meinen Kopf, und ich bin mir nicht sicher, was dieser Fehler bedeutet oder was man dagegen tun soll. Hier ist mein Code:Fehler beim Vergleichen einer Zufallszahl mit der Größe eines Vektors

class player::deck 
{ 
    public: 
     vector<int> deck; 
     int draw(){ 
      int card = srand(time(NULL)) % deck.size(); 
      deck.erase(deck(begin)+card); 
      return card; 
     } 
}; 

Was ich versucht, ein Deck für jeden Spieler zu tun ist, zu machen. Karten, die durch ganze Zahlen dargestellt werden (0 ist Karte 0, 1 ist Karte 1 usw.).

Und hier ist der Fehler:

/home/ubuntu/workspace/try3/main.cpp: In member function ‘int player::deck::draw()’:                            
/home/ubuntu/workspace/try3/main.cpp:27:54: error: invalid operands of types ‘void’ and ‘std::vector<int>::size_type {aka long unsigned int}’ to binary ‘operator%’        
     int card = srand(time(NULL)) % deck.size();                                   
               ^                                   
/home/ubuntu/workspace/try3/main.cpp:28:34: error: no match for call to ‘(std::vector<int>) (<unresolved overloaded function type>)’                
     deck.erase(deck(begin)+card);                                      
          ^  

Jede Hilfe wäre enorm geschätzt. Wenn ich an der falschen Stelle bin oder die Seite falsch benutze, lassen Sie es mich bitte wissen.

+0

srand nicht eine Zufallszahl zurückgibt, es initialisiert nur die Zufallszahl Generator. Daher machst du void% size_t – JVApen

+0

JVApen ist richtig. Sie müssen rand() nach srand() verwenden – Vucko

Antwort

2

Sie wollen, dies zu tun:

srand(time(NULL)); 
int card = rand() % deck.size(); 

srand: Initialisieren Zufallszahlengenerator

rand: Generieren Zufallszahl

Verwandte Themen