如何在非模板化的类中使用模板特化? C ++

时间:2012-10-15 13:30:47

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

我有一个不是模板类的类,我需要在这个类中添加一个函数作为模板函数。问题是我在类中调用了一个需要字符串作为参数的函数,所以我需要创建一个这个模板的专用版本,这样我只有在参数为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*

1 个答案:

答案 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