我想要實現像這樣兩個簡單的抽象類:實現抽象類的無模板參數
class Hashable {
public:
virtual Int hashValue() = 0;
};
template <typename T>
class Equatable {
virtual Bool operator == (const T& other) = 0;
}
這些課程給我的模板偏特的機會,在我的新字典類。
但是,我無法讓他們工作。這裏是我的字典類的聲明:
template <Hashable Key, typename Value>
class Dictionary {
.
.
.
};
的問題是,關鍵還應該Equatable
因爲hashability應該要求它。
所以,我有兩個問題:
我們可以重寫
Equatable<T>
類沒有模板參數? C++是否有任何關鍵字指向類的當前類型?在我看來,
Hashable
最好從Equatable
繼承。如何在Hashable
沒有新的模板定義(如果我的第一個問題回答是,那麼這個問題已經解決了)?這裏最好的面向對象的方法是什麼?使用模板參數的接口類似乎很俗氣。
謝謝。
我想你實際上是尋找類型類的機制,這是不是真的很好可用在C++中。有一種從C++ 11開始計劃的概念機制,但它並沒有使它成爲C++ 17(http://honermann.net/blog/?p=3) –