С++ Дружественный параметр шаблона #536792


#0 by Ненавижу 1С
Жутко хочется такого, но не компилируется: template<typename T> class MyList { public:    friend class T; //тут ошибка: нельзя объявит параметр другом    T createObject    {        T* obj = new T; //предполагается что шаблоны будут с private конструктором        Add(obj);        return obj;    } }; Как обойти?
#1 by fellow
Подозреваю, что тебе на самом деле хочется не друга-параметра, а чего-то другого. Чего именно? Для чего запрещать конструирование объектов типа Т? Для этого конкретного случая, если смотреть узко, можно специализировать шаблон для конкретного класса, лишённого открытого конструктора, но имеющего производящую функцию, и вызывать эту функцию в createObject. А если взглянуть шире - не будет ли предпочтительнее изменить дизайн твоего списка и избавить его от необходимости конструировать объекты неизвестной ему природы?
#2 by Ненавижу 1С
забудь, друже, я и сам понял, что ляпнул фигню
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С