Если я правильно понимаю ваш вопрос, вы пытаетесь определить Matrix как шаблон, принимая тип строки и тип столбца, а затем rowType (и я предполагаю также columnType) как шаблоны типа матрицы.Мой большой вопрос: где фактические данные?В какой-то момент, я предполагаю, что эта Матрица должна фактически разбиваться на структурированную группу целых чисел, или удваивается, или символ, или обратные итераторы указателей на 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 в классе Matrix, например:
template <class DataType>
Row<DataType> Matrix::getRow(int index){
//return an instance of Row<DataType> containing the appropriate row
}