Если я правильно понимаю ваш вопрос, вы пытаетесь определить матрицу в качестве шаблона с типом строки и типом столбца, а затем rowType (и я предполагаю также тип столбца) в качестве шаблонов типа матрицы. Мой большой вопрос: где фактические данные? В какой-то момент я предполагаю, что эта матрица должна фактически разбиться на структурированную группу ints, или удваивает, или символы, или обратные итераторы указателей на 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
}
Почему вы пытаясь сделать это, вместо того, чтобы определять один (или оба) этих классов в терминах базового типа данных (например, int, double и т. д.)? В этом случае, где этот тип данных определен/объявлен? – tlayton
Как изменить тип строк и столбцов, чтобы обеспечить разные матрицы? Являются ли типы строк и столбцов, которые меняются, или просто экземпляры? –