我有一个不是模板类的类,我需要在这个类中添加一个函数作为模板函数。问题是我在类中调用了一个需要字符串作为参数的函数,所以我需要创建一个这个模板的专用版本,这样我只有在参数为const char*
时才能调用此函数或者函数内部的条件检查仅在参数为const char*
时才调用函数,但似乎也不起作用。任何帮助将不胜感激!
template<class myType> __declspec(nothrow)
std::string GetStrVal(int row, int col, myType default) {
try {
CheckColumnType(col, String);
}
catch(DatatableException e){
return default;
}
return this->m_rows[row][col];
}
template<class myType>
std::string GetStrVal(int row, const char* col, myType default) {
unsigned int columnIndex = this->GetColumnIndex(col);
return GetStrVal(row,columnIndex, default);
}
GetColumnIndex()
只需const char*
。
答案 0 :(得分:2)
你不需要专门化任何东西;你可以提供一两个重载:
template<class myType> __declspec(nothrow)
std::string GetStrVal(int row, int col, myType default); // template
__declspec(nothrow)
std::string GetStrVal(int row, int col, std::string default); // overload
__declspec(nothrow)
std::string GetStrVal(int row, int col, const char *default); // overload