我收到了这个错误,我无法弄清楚原因。
#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_ */
答案 0 :(得分:1)
在这一行:
int index = rand()%_vec.size();
您调用函数rand()
但不包含声明它的标头。具体来说,您需要将以下行添加到程序的顶部:
#include <cstdlib>
答案 1 :(得分:1)
rand
和vector
都在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;
}