2013-08-27 97 views
1

我試圖讓下面的工作:自參照模板

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