下面是我的代码。我正在使用GNU G ++编译器。我收到错误消息“ main.cpp:在函数'int main()”中:
main.cpp:12:9:错误:“类哈希”没有名为“ printVectorContents”的成员
我知道我忽略了一些愚蠢的事情,只是无法将手指放在上面。有什么帮助吗?
int main()
{
std::cout << "Yeah you did dat"<<std::endl;
hash<int> newHash;
newHash.printVectorContents();
std::cin.get();
return 0;
}
还有我的模板类
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;
}
}
};
最佳答案
hash
是通用名称,可以将其命名为myhash
,或将其放置在其自己的命名空间中,以避免名称冲突。
删除hash(){}
。您已经有一个带有默认参数的构造函数,当您声明hash<int> myhash;
时,它不知道要调用哪个构造函数。
将i<hashVector.rend()
更改为i != hashVector.end()
。
将hashVector(100,NULL)
更改为hashVector(100)
。