【发布时间】:2015-05-06 02:58:35
【问题描述】:
在以下代码中:
class foo
{
public:
void foo_function() {};
};
class bar
{
public:
foo foo_member;
void bar_function(foo bar::*p_foo)
{
// what is the corrct sintax for following:
this->*p_foo->foo_function(); // expression must have a pointer type??
}
};
int main()
{
foo foo_obj;
bar bar_obj;
typedef foo bar::*p_foo;
p_foo blah = &bar::foo_member;
bar_obj.bar_function(blah);
return 0;
}
使 bar::bar_function 工作的正确语法是什么?
【问题讨论】:
-
优先级和类型也不匹配:
((this->*p_foo).foo_function)(); -
你能告诉我们更多关于你得到的语法错误的信息吗?
-
@codekiddy
p_foo blah = &bar::foo_member;你认为&bar::foo_member实际上是通过什么方式提供了一个成员函数指针? -
@codekiddy 似乎在读者眼中 :-P 但绝对
void bar_function(foo bar::*p_foo)想要一个成员函数指针。那么你怎么能说我们不是在谈论成员函数指针?? -
它需要一个成员指针。
foo是一个类,而不是函数指针 typedef。
标签: c++ member-pointers