2016-03-27 32 views
0

我有點頭大,我不確定這個錯誤意味着什麼或者該怎麼做。這裏是我的代碼:將隨機數字與矢量大小進行比較的錯誤

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

什麼我試圖做的是讓每個玩家的甲板。用整數表示的卡(0是卡0,1是卡1等)。

而這裏的錯誤:

/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);                                      
          ^  

任何幫助將大大讚賞。如果我在錯誤的地方,或者我錯誤地使用了該網站,請告訴我。

+0

函數srand不返回一個隨機數,它只是初始化隨機數發電機。因此,你正在做無效%size_t – JVApen

+0

JVApen是正確的。你需要在srand()之後使用rand() – Vucko

回答

2

你想這樣做:

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

srand:初始化隨機數發生器

rand:生成隨機數