所以我一直试图弄清楚如何使用模板特化,但遇到意外的编译器错误。我检查语法越多,它看起来越正确,所以我很遗憾。我要做的就是创建两个专门的函数模板,并将它们与重载函数进行比较。我得到的错误如下:第28和35行的'OverloadedFunk' could not be resolved
。这是我试图摇滚的代码:
#include <iostream>
using namespace std;
enum ErrorCode {
ERROR_NONE = 0, ///< No errors
SOME_FAILURE_01,
SOME_FAILURE_02,
INVALID_STATUS,
ERROR_UNKNOWN,
};
template<typename _to, typename _from>
inline int OverLoadedFunk(_from const &arg, _to &dest)
{
cout << "OverLoadedFunk3 - Template to from";
return 0;
}
template<>
inline int OverloadedFunk(const int &from, std::string &dest) //Line 28
{
cout << "OverloadedFunk1 - int to string";
return 0;
}
template<>
inline int OverloadedFunk(const ErrorCode &from, std::string &dest) //Line 35
{
cout << "OverloadedFunk2 - enumeration to string";
return 0;
}
int main() {
std::string localDest = "test";
int localFrom = 1234;
OverloadedFunk(localFrom, localDest);
return 0;
}
我到底错在了什么?我知道我可以使用重载函数,但我正在尝试测试特化和重载函数之间的区别,以便在这种情况下无法帮助我。非常感谢所有帮助。
答案 0 :(得分:3)
您的主要功能模板名为OverLoadedFunk
,但您的专业名称为OverloadedFunk
- C ++区分大小写!