Sea*_*ord 0 c++ templates vector
以下是我的代码.我正在使用GNU G ++编译器.我收到错误"main.cpp:在函数中'int main()':main.cpp:12:9:错误:'class hash'没有名为'printVectorContents'的成员"
我知道我忽略了一些愚蠢的东西,我无法用手指指着它.有帮助吗?
int main()
{
std::cout << "Yeah you did dat"<<std::endl;
hash<int> newHash;
newHash.printVectorContents();
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和我的模板课......
template <class dataTypeClass> class hash{
private:
std::vector <dataTypeClass> hashVector;
std::string mName;
public:
hash(){}
hash(std::string aName = "unnamedHash"):mName(aName),hashVector(100,NULL){}
~hash(){std::cout<<"Hash "<<mName<<"destructing!";}
void addHashItem(dataTypeClass aHashItem, std::string akey){}
int hashFunction(dataTypeClass hashItem){return 0;}
void printVectorContents()
{
for (typename std::vector<dataTypeClass>::iterator i = hashVector.begin(); i<hashVector.rend(); i++)
{
std::cout<< *i << std::endl;
}
}
};
Run Code Online (Sandbox Code Playgroud)
hash是一个通用名称,make it myhash等,或者将它放在自己的命名空间中以避免名称冲突.
删除hash(){}.你有一个构造函数已经采用了一个默认参数,当你声明时hash<int> myhash;,它不知道要调用哪个构造函数.
更改i<hashVector.rend()到i != hashVector.end().
更改hashVector(100,NULL)到hashVector(100).