c++ - 如何获取指向专门针对字符串的模板函数的指针?

标签 c++ visual-c++ templates function-pointers

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

从 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,同样的例子会成功。

最佳答案

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

关于c++ - 如何获取指向专门针对字符串的模板函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051010/

相关文章:

c++ - 创建静态和共享 C++ 库

visual-c++ - libgcrypt.lib中无法解析的外部符号

c++ - 在 C++ 中读取和写入二进制文件

c++ - 成员函数模板参数数量超过 1 时的编译错误

C++ 使用数组指针访问类结构成员

c++ - 返回不同的数据类型而不明确指定数据类型

c++ - 使用迭代器将 N 个元素从一个容器插入到另一个容器

winforms - 如何从 System.Windows.Forms.Form 中获取 HWND 句柄

javascript - 将变量传递给 Javascript 文件

database - 如何在用户提交表单后自动生成网页