объявление friend class в шаблонном классе (VC6.0)
От: denos  
Дата: 17.06.04 10:13
Оценка:
Добрый день!
Такая проблема — в следующем коде внутри шаблона непрапвильно выбирается определение класса CreatePolicy и выдаётся ошибка

C:\work\projects\test\test.cpp(18) : error C2027: use of undefined type 'CreatePolicy'
C:\work\projects\test\test.cpp(15) : see declaration of 'CreatePolicy'

то есть декларацией компилятор считает почему то friend class CreatePolicy, а не параметр щаблона.
На других компиляторах проверить не могу — нет под рукой.

это по стандарту?

template <typename T>
class TNewCreatePolicy {
public:
static T * Create() {
return new T();
};
};

template <typename T, typename CreatePolicy = TNewCreatePolicy<T> >
class TObject {
friend class CreatePolicy;
public:
static T * Create() {
return CreatePolicy::Create();
}
};

class TInt : public TObject<TInt> {
private:
TInt() {};
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.