代码之家  ›  专栏  ›  技术社区  ›  alexgolec

我的模板类定义中有一些循环

  •  0
  • alexgolec  · 技术社区  · 14 年前

    我有一个矩阵类,它接受行和列引用类型,可以用来访问它作为模板参数。同时,行和列类型被传递给它们所表示的矩阵类型。

    有没有办法打破这种循环?下面是一些演示代码片段:

    #include "MatrixConcreteType.h"
    template <class MatrixType>
    class rowType <MatrixType>
    {...}
    

    #include "VectorTypes.h"
    template <class row_t, class col_t>
    class Matrix
    {...}
    

    我想我可以找一个位置好的外行?

    1 回复  |  直到 14 年前
        1
  •  1
  •   tlayton    14 年前

    如果我正确理解了您的问题,那么您正在尝试将矩阵定义为一个模板,该模板采用行类型和列类型,然后将行类型(我也假设为列类型)定义为矩阵类型的模板。我最大的问题是:实际数据在哪里?在某个时刻,我假设这个矩阵实际上应该分解成一组整数,或者double,或者chars,或者bools指针的反向迭代器,或者其他什么。那是哪里?

    你的循环似乎是一个症状,试图使太多的架构。找出要实际存储数据的类,将该类的模板参数设置为该数据的类型,然后将所有其他相关类的模板参数设置为主类或数据类型。例如:

    template <class DataType>
    class Matrix{
        //store the data in here: a DataType [], or vector<DataType>, or something
    }
    

    template <class MatrixType>
    class Row{
        //has something which refers back to the original matrix of type MatrixType
    }
    

    template <class DataType>
    class Row{
        //has something which refers back to the original matrix of type Matrix<DataType>
    }
    

    我建议使用上述第二种方法,因为这样可以更容易地引用矩阵类中的Row类,例如:

    template <class DataType>
    Row<DataType> Matrix::getRow(int index){
        //return an instance of Row<DataType> containing the appropriate row
    }