自我参考模板

时间:2013-08-27 16:51:59

标签: c++

我正在努力让以下工作:

template< typename T >
class MyTemplate {
public:

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

};

其中myMethod参数MyTemplate< typename U >表示使用不同类型实例化的类。这甚至可能吗?

1 个答案:

答案 0 :(得分:8)

是的,这是可能的。语法如下:

template< typename T >
class MyTemplate {
public:

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

};

这是一个常见的结构。有关示例,请参阅std::shared_ptr's constructors