C++中的typedef typename 作用


今天在代碼里看到了這樣一段代碼:

typedef typename RefBase::weakref_type weakref_type;

起初一直搞不懂為什么要加個typename,后來搜索了一下才知道這個關鍵字是有目的的:

如果不加這個關鍵字,編譯器就不知道RefBase::weakref_type到底是個什么東西?可能是靜態成員變量,也有可能是靜態成員函數,也有可能是內部類。

加上這個關鍵字等於手動告訴編譯器:RefBase::weakref_type 就是一個類型。

例:

template<typename T>   
class A {  
public:  
    typedef T a_type;  
};  
template<typename A>  
class B {  
public:  
    //typedef A::a_type b_type;  
    typedef typename A::a_type b_type;  
};  
int main() {  
    B<A<int>> b;  
    return 0;  
}  

如果把注釋取消,就會產生編譯錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM