1

我正在尝试使用一组过滤器函数来根据字符串输入运行适当的例程。我尝试使用模板为常见情况创建匹配器函数,但是当我尝试存储指向专用函数的指针时出现“类型不等于类型”错误(在结构中,在实际应用程序中)

来自 Visual 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   

(它的主返回值也有错误,但这与我无关。)

const char *如果用 int 替换,相同的示例会成功。

4

1 回答 1

2

ISO 标准禁止将字符串作为模板值参数。

于 2009-06-26T20:12:34.777 回答