C ++:我用什么类型来定义这张地图?

时间:2011-05-10 19:23:09

标签: c++ map function-pointers

所以,我有一个函数指针定义为:

unsigned static int (*current_hash_function)(unsigned int);

我正在尝试制作一个指向函数名称的指针映射:

typedef std::map<fptr_t, std::string> function_map_t;

但是我收到了这个错误:

  

src / main.h:24:错误:ISO C ++禁止声明‘fptr_t’没有类型

其他代码:

main.h

typedef (*fptr_t)(unsigned int*);
typedef std::map<fptr_t, std::string> function_map_t;
function_map_t fmap;

5 个答案:

答案 0 :(得分:1)

你的“main.h”代码没有给函数指针typedef一个返回类型。这对我有用:

#include <map>
#include <string>

int main()
{
    typedef unsigned (*fptr_t)(unsigned);
    typedef std::map<fptr_t, std::string> function_map_t;
    function_map_t fmap;
}

答案 1 :(得分:1)

您错过了返回类型:

typedef int (*fptr_t)(unsigned int*);

答案 2 :(得分:0)

你还记得键入dede函数指针吗?

typedef unsigned int (*fptr_t)(unsigned int);

我相信这是正确的语法

答案 3 :(得分:0)

你的函数指针的typedef是:

typedef unsigned int (*fptr_t)(unsigned int)

...然后你可以像这样宣布你的地图:

typedef std::map<fptr_t, std::string> function_map_t;

答案 4 :(得分:0)

您的typedef函数指针缺少返回类型:

typedef unsigned int (*fptr_t)(unsigned int *);

以上是指向函数的指针的typedef,该函数返回unsigned int并且unsigned int *作为参数。