Может кто-нибудь объяснить это C ++ typedef? - PullRequest
11 голосов
/ 17 февраля 2010

Я только начал работать с C ++ после того, как долгое время не работал с ним. Хотя большая часть этого имеет смысл, есть некоторые биты, которые я нахожу немного путаницы . Например, может кто-нибудь объяснить, что делает эта строка:

typedef bool (OptionManager::* OptionHandler)(const ABString& value);

Ответы [ 4 ]

26 голосов
/ 17 февраля 2010

Определяет тип OptionHandler как указатель на функцию-член класса OptionManager, и где эта функция-член принимает параметр типа const ABString& и возвращает bool.

9 голосов
/ 17 февраля 2010
typedef bool (OptionManager::* OptionHandler)(const ABString& value);

Начнем с:

OptionManager::* OptionHandler

Это говорит о том, что ::* OptionHandler является функцией-членом класса OptionManager. * перед OptionHandler говорит, что это указатель; это означает, что OptionHandler является указателем на функцию-член класса OptionManager.

(const ABString& value) говорит, что функция-член будет принимать значение типа ABString в константную ссылку.

bool говорит, что функция-член будет возвращать логический тип.

typedef говорит, что с помощью «* OptionHandler» вы можете создать множество указателей на функции, которые могут хранить этот адрес этой функции. Например:

OptionHandler fp[3];

fp[0], fp[1], fp[2] будет хранить адреса функций, семантика которых соответствует приведенному выше объяснению.

4 голосов
/ 17 февраля 2010

это указатель на функцию-член OptionManager, которая принимает константную ссылку ABString и возвращает bool

2 голосов
/ 17 февраля 2010

Это typedef для указателя на функцию-член. Пожалуйста, проверьте C ++ FAQ .

...