0

我有一个不是模板类的类,我需要向这个类添加一个函数,它是一个模板函数。问题是我在类中调用了一个需要字符串作为参数的函数,因此我需要制作此模板的专用版本,这样我才能仅在参数为 a 时调用此函数const char*或在函数内部进行条件检查仅在参数为 a 时才调用该函数,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*.

4

1 回答 1

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
于 2012-10-15T13:52:56.077 回答