如何使用VS Debugger弄清楚模板参数的类型?

时间:2011-11-30 02:12:03

标签: c++ visual-studio templates

我正在处理模板化程度很高的代码,现在需要弄清楚模板参数的类型。

在下面简化的代码中,你如何调试以找出每个 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 *,那么在模板化代码的实例化形式中看到代码就是最好的了。

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

提前致谢。

1 个答案:

答案 0 :(得分:4)

也许我误解了你想要的东西,但是(即使在蹩脚的旧MSVS 2003中)Watch(或Auto)窗口通过“Type”栏为我做得很好:

MSVS 2003 Auto window

请注意,在一个程序中T可以为不同的实例化采用许多不同的类型(例如,我在图片中的小程序中只有三个),因此询问什么类型{{1}是没有意义的在特定实例化的上下文之外。

如果您正在逐步操作模板化类的方法,并在Watch窗口中检查T的类型,则可以在调用堆栈中看到它:

enter image description here