видимость вложенного класса в унаследованном классе

Код, над которым я работаю, примерно такой:

// List.h
template <typename T> class List{
template <typename TT> class Node;
Node<T> *head;
/* (...) */
template <bool D> class iterator1{
protected: Node<T> this->n;
public: iterator1( Node<T> *nn ) { n = nn }
/* (...) */
};
template <bool D> class iterator2 : public iterator1<D>{
public:
iterator2( Node<T> *nn ) : iterator1<D>( nn ) {}
void fun( Node<T> *nn ) { n = nn; }
/* (...) */
};
};

(если точный код вышеупомянутого необходим, пожалуйста, обратитесь к моему предыдущий вопрос )

// Matrix.h
#include "List.h"template <typename T>
class Matrix : List<T> {
/* (...) - some fields */
class element {
supervised_frame<1> *source; // line#15
/* (...) - some methods */
};
};

Я получаю следующую ошибку в g ++:

 In file included from main.cpp:2:
Matrix.h:15: error: ISO C++ forbids declaration of ‘supervised_frame’ with no type
Matrix.h:15: error: expected ‘;’ before ‘<’ token

1

Решение

я верю Matrix<T>::element класс не связан с классом List<T>, Так что я думаю, что вы должны иметь typename List<T>::template supervised_frame<1>,

2

Другие решения

Похоже на вашу предыдущую проблему — используйте typename List<T>::supervised_frame<1> *source; Это потому что supervised_frame<1> это зависимый тип, т.е. он зависит от параметра шаблона T

2

По вопросам рекламы [email protected]