2011-11-30 16 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

怎么样的你!非常感谢你! –

相关问题