【发布时间】:2021-02-20 07:54:10
【问题描述】:
template<typename _TChar>
struct simplestring
{
void show_tstring()
{
throw "no implement";
}
void simplestring<char>::show_tstring()
{
cout << "char string\n";
}
void simplestring<wchar_t>::show_tstring()
{
cout << "wchar_t string\n";
}
};
void test()
{
simplestring<char> s;
s.show_tstring();
}
我想专门化simplestring的成员函数show_tstring。当 _TChar 为 char 时输出“char string\n”,当 _TChar 为 wchar_t 时输出“wchar_t string\n”。否则抛出异常。
编译时出现错误信息:
错误 C2535 'void simplestring<_tchar>::show_tstring(void)': 成员 已定义或声明的函数
我也尝试过把函数放到类之外,
void simplestring<char>::show_tstring()
{
cout << "char string\n";
}
编译失败
错误 C4430 缺少类型说明符 - 假定为 int。注意:C++ 没有 支持 默认-int ForTest D:\test\ForTest\ForTest\templateTest.h 848
【问题讨论】:
-
您忘记提及显示代码的问题。
-
@cigien,它无法编译。
-
是的,但是你需要显示错误信息。
-
“它不能编译”到底是怎么回事?发生什么了?如果你打电话给你的汽车修理工并告诉他们“我的车不动”,仅此而已,你认为你会得到解决问题的有用提示吗?