问题:我有什么方法可以从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对变量有帮助。但是对于它对函数的行为一无所知。有帮助吗?
答案 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);
无论如何,只需尝试使模板函数更简单,以便它可以使用整数,浮点数等。或者使它区分数字和字符串。