PersonalVec.hpp:12:错误:在';'之前预期的unqualified-id令牌错误

时间:2011-09-19 22:25:30

标签: c++

我收到了这个错误,我无法弄清楚原因。

#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_ */

3 个答案:

答案 0 :(得分:1)

在这一行:

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

您调用函数rand()但不包含声明它的标头。具体来说,您需要将以下行添加到程序的顶部:

#include <cstdlib>

答案 1 :(得分:1)

randvector都在std命名空间中。 使用

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

std::rand() 

答案 2 :(得分: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;
}