2011-09-19 98 views
-1

我得到這個錯誤,我找不出原因。PersonalVec.hpp:12:錯誤:預期在''之前的不合格id;'令牌錯誤

#include <vector> 
#include <cstdlib> 

#ifndef PERSONALVEC_HPP_ 
#define PERSONALVEC_HPP_ 

template <class T,class PrnT> 

class PersonalVec 
{ 
public: 
    PersonalVec() {} 

    ~PersonalVec() 
    { 
     //TODO: delete vector. 
    } 

    void push_back(T& obj) 
    { 
     int index = rand()%_vec.size(); 
    } 

private: 
    vector<T*> _vec; 
}; 

#endif /* PERSONALVEC_HPP_ */ 
+1

你是否包含'vector'和'rand'所需的頭文件,爲什麼你不寫正確的名稱空間? –

+0

哪一行是12行? –

+0

第12行是一個空行(一個大於模板<...> – benjamin

回答

1

兩個randvector在std命名空間。問題的 使用

private: 
std::vector<T*> _vec; 

std::rand() 
+0

謝謝,就是這樣(: – benjamin

+0

,但我不需要屁股std ::蘭德 – benjamin

+0

@benjamin,蘭德似乎都在std ::和全局::命名空間。 –

1

在此行中:

int index = rand()%_vec.size(); 

你調用函數rand()但不包括宣佈它的頭。具體來說,您需要將下面一行添加到您的程序頂部:

#include <cstdlib> 
+2

'rand'不在''。 –

+0

修正了我的錯字,謝謝 – tyree731

+0

改爲,仍然出錯 – benjamin

0

部分原因可能是你使用的是vector沒有在std命名空間之中。將vector<T*> _vec更改爲std::vector<T*> _vec

下面的代碼(Ideone linky:http://www.ideone.com/HgL1e)似乎工作正常。

#include <vector> 
#include <cstdlib> 

template <class T,class PrnT> 
class PersonalVec 
{ 
public: 
    PersonalVec() {} 

    ~PersonalVec() 
    { 
     //TODO: delete vector. 
    } 

    void push_back(T& obj) 
    { 
     int index = rand()%_vec.size(); 
    } 

private: 
    std::vector<T*> _vec; 
}; 

int main() 
{ 
    int i = 1; 
    PersonalVec<int, int> testVec; 
    testVec.push_back(i); 
    return 0; 
} 
相關問題