質問

私は、文字列の入力に基づいて、適切なルーチンを実行するために、フィルタ機能のセットを使用しようとしていました。私は、テンプレートを使用して一般的なケースのためにマッチャー機能を作成しようとしましたが、私は(実際のアプリケーションでは、構造中に)専門の関数へのポインタを格納しようとするとエラー「を入力すると等しくないタイプ」を取得

ビジュアルC ++ 8 'コンソールアプリケーション' から

蒸留例

template <const char *C>
const char*
f(void) {
  return C;
}

const char* (*g)(void) = f<"hi">;


int _tmain(int argc, _TCHAR* argv[])
{
  return g();
}

これはエラーで失敗します。

Error   1   error C2440: 'initializing' : cannot convert from 'const char *(__cdecl *)(void)' to 'const char *(__cdecl *)(void)'    c:\files\pointer.cpp    7   

(それはまた、メインの戻り値にエラーがありますが、それはここで私には関係しません。)

同じ例succedesをINTとconst char *置換されている場合

役に立ちましたか?

解決

テンプレート値パラメータとして

文字列はISO標準で禁止されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top