在MS Visual Studio 2010监视窗口中评估模板功能

时间:2015-03-23 03:09:58

标签: c++ visual-studio-2010 templates

问题:我有什么方法可以从MS Visual Studio Watch 2010窗口评估模板功能吗?

详细信息:我知道如果我有以下功能:

void Test (CString& sSample)
{
   OutputDebugString (_T("The value of Sample is ") + sSample);
}

我可以在Watch Window中使用,并在调试时在输出窗口中打印输出。但是,我发现当使用如下所示的模板函数时,这不起作用:

template<class T>
void Test (T& t)
{
   OutputDebugString (_T("The value when T is string is: ") + t);
}

我可以以某种方式实现它吗?我知道autoexp.bat对变量有帮助。但是对于它对函数的行为一无所知。有帮助吗?

1 个答案:

答案 0 :(得分:0)

调试模板功能没有问题。这里的问题是OutputDebugString,它的参数是字符串,所以&#34; Text1&#34; +&#34; Text2&#34;没有工作,&#34; Text1&#34; + 123不起作用。它恰好适用于CString,否则它不是真正的模板材料。

这适用于VS 2013(使用C ++ =&gt;语言选项,启用RTTI),它可能不适用于VS 2010:

template<class T> void Test2(T& t)
{
    OutputDebugStringA( "typeid(t).name=" );
    OutputDebugStringA( typeid(t).name() );
    OutputDebugStringA( "\n" );
}

int i = 0;
CString str = "str";
Test(i);
Test(str);

无论如何,只需尝试使模板函数更简单,以便它可以使用整数,浮点数等。或者使它区分数字和字符串。