2013-08-27 4 views
1

Я пытаюсь получить следующие работы:Само Referencing Шаблон

template< typename T > 
class MyTemplate { 
public: 

    void myMethod(const MyTemplate< typename U > &) 
    { 
     return; 
    }; 

}; 

где аргумент MyMethod MyTemplate< typename U > указывает класс инстанцированный с другим типом. Возможно ли это?

+1

Вы имели в виду 'const MyTemplate &'? – WhozCraig

+0

Где бы ни было - пример использования: 'MyTemplate < int > a; MyTemplate < float > b; a.myMethod (b); ' – Andy

ответ

8

Да, это возможно. Синтаксис выглядит следующим образом:

template< typename T > 
class MyTemplate { 
public: 

    template< typename U > 
    void myMethod(const MyTemplate<U> &) 
    { 
     return; 
    }; 

}; 

Это общая конструкция. Для некоторых примеров см. std::shared_ptr's constructors.

+0

Вы действительно хотели усовершенствовать родительский класс? – Andy

+0

@ Andy: Это была ошибка копирования и вставки, которая была исправлена. Благодарю. – NPE

Смежные вопросы