У меня есть класс матрицы и класс столбца внутри него:Как определение типа во внутренний класс
template<class T>
struct MatrixT
{
template<class T>
struct ColumnT
{
};
};
Обратите внимание, что ColumnT
всегда будет держать один и тот же тип как MatrixT
.
Для удобства я определяю
typedef MatrixT<double> matrix;
Так как в действительности, я буду использовать double
элемент большую часть времени. Но я также хочу определить что-то подобное для класса columnT
. Я попытался
typedef MatrixT<double>::ColumnT<double> matrix::column;
но компиляция завершается с ошибкой
ошибки - квалифицированное имя не допускается
Есть ли способ достичь чего я хочу?
Я хотел бы иметь возможность вводить matrix::column c;
так же, как я могу типа matrix m;
Вы попробовали 'MatrixT :: ColumnT' параметр T может быть затенен, поскольку оба шаблона используют один и тот же заполнитель для типа. попробуйте разные имена для T, а также –
похоже, что вы хотите, чтобы параметр шаблона 'T' всегда был одного и того же типа в' MatrixT' и 'ColumnT'. Если это так, jst избавится от этого второго шаблона 'и он должен работать нормально. –