C ++: Какой тип я использую для определения этой карты? - PullRequest
2 голосов
/ 10 мая 2011

Итак, у меня есть указатель функции, определенный как:

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 ]

1 голос
/ 10 мая 2011

Ваш код "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 голос
/ 10 мая 2011

Вы пропустили тип возврата:

typedef int (*fptr_t)(unsigned int*);
0 голосов
/ 10 мая 2011

В вашем typedef для указателя функции отсутствует тип возврата:

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

Выше указано typedef для указателя на функцию, которая возвращает unsigned int и имеет unsigned int * в качестве параметра.

0 голосов
/ 10 мая 2011

typedef указателя вашей функции:

typedef unsigned int (*fptr_t)(unsigned int)

... тогда вы можете объявить свою карту следующим образом:

typedef std::map<fptr_t, std::string> function_map_t;
0 голосов
/ 10 мая 2011

Вы помните, чтобы печатать указатель на функцию?

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

Я считаю, что это правильный синтаксис

...