Всем привет!
Попался вот такой необычный пример. Ниже приведена максимально короткая версия программы (все имена и персонажи вымышлены

), в которой возникает ошибка:
template <class Type>
class A;
template <class Type>
class B
{
friend class A<Type>;
private:
struct Index
{
Type x;
Type y;
};
Index* index_array;
public:
B(): index_array(NULL) {}
};
template <class Type>
class A
{
friend class B<Type>;
private:
B<Type>::Index * another_index_array;
public:
A(): another_index_array(NULL) {}
};
Такой код не компилируется. Компилятором выдается ошибка в следующей строчке:
B<Type>::Index * another_index_array;
Причем если заменить Type на конкретный тип, например, int, то все прекрассно компилируется. Подскажите почему так происходит?
Здравствуйте, Аноним, Вы писали:
А>Всем привет!
А>Попался вот такой необычный пример. Ниже приведена максимально короткая версия программы (все имена и персонажи вымышлены
), в которой возникает ошибка:
А>А> B<Type>::Index * another_index_array;
А>
попробуйте
typename B<Type>::Index * another_index_array;