我刚开始使用C++后,没有使用它很长一段时间。虽然其中大部分是有道理的,但我还是会找到一些点位confuddling。例如,可能有人请解释一下此行的作用:有人可以解释这个C++ typedef吗?
typedef bool (OptionManager::* OptionHandler)(const ABString& value);
我刚开始使用C++后,没有使用它很长一段时间。虽然其中大部分是有道理的,但我还是会找到一些点位confuddling。例如,可能有人请解释一下此行的作用:有人可以解释这个C++ typedef吗?
typedef bool (OptionManager::* OptionHandler)(const ABString& value);
它定义类型OptionHandler
是一个指针类OptionManager
的成员函数,并在该成员函数有const ABString&
类型,并返回的参数bool
。
这是一个指向OptionManager的成员函数,它接受一个const ABString refrence并返回一个布尔
它是一个typedef的指针成员函数。请检查C++ FAQ。
typedef bool (OptionManager::* OptionHandler)(const ABString& value);
让我们先从:
OptionManager::* OptionHandler
这就是说::* OptionHandler
是类OptionManager
的成员函数。 在OptionHandler
前面的*
表示它是一个指针;这意味着OptionHandler
是指向OptionManager
类的成员函数的指针。
(const ABString& value)
表示成员函数会将类型ABString
的值转换为const引用。
bool
说成员函数将返回一个布尔类型。
typedef
说使用“* OptionHandler”你可以创建许多函数指针,它可以存储该函数的地址。例如:
OptionHandler fp[3];
fp[0], fp[1], fp[2]
将存储其语义符合上述说明的函数的地址。
不错,你把类型分成小块,但“':: * OptionHandler'是一个成员函数”:为什么不是一个普通成员?只有在看周围环境时才能检测到。 – xtofl 2010-03-19 12:47:58
我很想知道为什么有人低估了这个... – 2010-02-17 05:40:24
毫无疑问,这是重复的。问题是,我们遇到的问题与您遇到的问题一样多。 (不是我downvote顺便说一句) – MSalters 2010-02-17 09:11:36
很高兴看到我不是唯一一个找到函数指针语法尴尬......在最好的时间! – 2010-02-17 12:49:22