簡體   English   中英

C ++中的模板化類

[英]Templated classes in C++

下面是我的代碼。 我正在使用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;
        }
    }
};
  1. hash是一個通用名稱,可以將其命名為myhash等,也可以將其放置在自己的名稱空間中以避免名稱沖突。

  2. 刪除hash(){} 當您聲明hash<int> myhash;時,已經有一個采用默認參數的構造函數hash<int> myhash; ,它不知道要調用哪個構造函數。

  3. i<hashVector.rend()更改為i != hashVector.end()

  4. hashVector(100,NULL)更改為hashVector(100)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM