使用模板別名為類似矩陣的向量建立Typedef
考慮以下類別模板:
template<size_t N, size_t M> class Matrix { // .... };
目標是目標是目標是目標定義一個typedef,它建立一個相當於Matrix 的Vector(列向量)大小為N 和1。最初,嘗試使用 typedef:
typedef Matrix<N,1> Vector<N>;
但是,這導致了編譯錯誤。使用類別繼承實現了類似但不相同的解決方案:
template <size_t N> class Vector: public Matrix<N,1> { };
為了找到更合適的解決方案,我們轉向C 11 中引入的別名聲明:
template <size_t N> using Vector = Matrix<N, 1>;
這允許建立類型別名Vector
在C 03 中,可以使用具有嵌套typedef 的結構來實現類似的近似:
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
這裡,類型Vector::type 相當於Matrix
以上是如何從 C 中的矩陣模板建立向量類型別名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!