我正在構建矩陣模板。有運營商,功能和一切工作正常。除非我嘗試將一個double類型的矩陣轉換爲int類型的矩陣(反之亦然)。 =運算符不能被定義,所以它不可能在類外部對basic_Matrix2D和basic_Matrix2D進行覆蓋。我知道我可以在class =運算符中編寫來轉換,但在這種情況下,會有兩個=運算符具有相同的參數。使用double作爲模板參數時,從double轉換將與從template參數轉換相同。類定義如下,代碼可以從SourceForge模板類型轉換
template <class _T> class basic_Matrix2D {
}
訪問還有我想起了模板,轉換爲模板類型的指針作品,而轉換爲模板類型另一個問題沒有。這可能是編譯器特定的。觀察:提前
operator _T() {
return something;
}
operator _T*() {
return somethingelse;
}
感謝,
傑姆
看CRTP http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern - 這可能提供一種解決方案 – slashmais 2009-09-14 20:04:19
Thx,這提供了一個想法。我可以從basic_Matrix2D派生基本矩陣類型(double和int)以添加重載操作符。我應該想到,我想我需要更多的咖啡因 – 2009-09-14 20:23:57
請注意,標識符以下劃線開頭並以大寫字母開頭並保留用於實施。這意味着你不能使用'_T'。 (實際上,這可能意味着一些宏'_T'踐踏你的代碼並導致很多奇怪的錯誤信息。)所有標識符都包含相同的下劃線和全局名稱空間中以下劃線開始的所有標識符。如果這太記住了,只需按照常見的建議來避免所有以下劃線開頭或包含兩個連續的下劃線的標識符。 – sbi 2009-09-14 20:58:00