2011-11-30 17 views
2

我正在處理模板嚴重的代碼,現在需要弄清楚模板參數的類型。如何找出使用VS Debugger的模板參數的類型?

在下面的代碼中,我簡化了一下,如何調試以找出每個類型的哪個類型T取決於main(),它將用int,double或任何其他類型啓動A。

template <class T> 
class A // 1 
{ 
public: 
    typedef T Type; 
}; 

template <class T> 
class A<T*> // 2 
{ 
public: 
    typedef T Type; 
}; 

template <class T> 
class A<T**> // 3 
{ 
pbulic: 
    typedef T Type; 
}; 

我嘗試使用觀看窗口,但我不認爲它可以幫助我知道T的實際類型是什麼。

如果T是int *,那麼對於我來說,在模板化代碼的一個instatiation形式中看到的代碼是最好的,

class A // 1 
{ 
    public: 
    typedef int* Type; 
}; 

在此先感謝。

回答

4

也許我誤解你想要什麼,但(即使是在搖搖欲墜的老MSVS 2003)的手錶(或自動)窗口通過「類型」列做到這一點很好地對我說:

MSVS 2003 Auto window

注在一個程序T可能會採取許多不同的類型爲不同的實例(例如,我有三個只是在我的小程序中),所以它是沒有意義的問什麼類型T是在特定實例的上下文之外。

如果您是通過模板類的方法加強,以及在監視窗口中檢查this類型,你可以看到它在調用堆棧:

enter image description here

+0

怎麼樣的你!非常感謝你! –

相關問題