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

何も専門にする必要はありません。オーバーロードを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 に答える