2011-09-19 43 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; 
} 
相关问题