我有一个矩阵类,它采用行和列引用类型,可用于将其作为模板参数进行访问。同时,行和列类型传递它们所代表的矩阵类型。
有没有办法打破这种循环?以下是一些示范性代码片段:
#include "MatrixConcreteType.h"
template <class MatrixType>
class rowType <MatrixType>
{...}
在矩阵文件中:
#include "VectorTypes.h"
template <class row_t, class col_t>
class Matrix
{...}
我想我可以尝试一个位置很好的外部人员?
答案 0 :(得分:1)
如果我正确理解你的问题,你试图将Matrix定义为采用行类型和列类型的模板,然后将rowType(我假设也是columnType)定义为矩阵类型的模板。我的大问题是:实际数据在哪里?在某些时候,我认为这个矩阵实际上应该分解为一组结构化的int,double或chars,或者反转指向bool或其他东西的指针的迭代器。那是哪里?
你的循环似乎是试图制造太多建筑的一种表现。找出你想要实际存储数据的类,使该类的模板参数成为该数据的类型,然后将所有其他相关类的模板参数作为主类或数据类型。例如:
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>
}
我建议使用上面的第二个替代方法,因为它更容易引用Matrix类中的Row类,例如:
template <class DataType>
Row<DataType> Matrix::getRow(int index){
//return an instance of Row<DataType> containing the appropriate row
}