C++ 通过指向类成员的指针调用函数

C++ 通过指向类成员的指针调用函数,c++,member-pointers,C++,Member Pointers,在以下代码中: 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(); // expre

在以下代码中:

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\u函数起作用?

这在以下情况下起作用:


这都是关于有正确的间接层次。由于
p\u foo
是一个指向成员的指针,因此在尝试从此
访问它之前,我们需要取消对它的引用。此时,您拥有实际的
foo_成员
对象,而不是指向它的指针,因此您可以通过点符号调用其
foo_函数。

优先级和类型不匹配:
((this->*p_foo.foo函数)()
你能给我们更多关于语法错误的信息吗?@codekiddy
p_foo blah=&bar::foo_member
您认为
&bar::foo_member
实际上以何种方式提供了一个成员函数指针?@codekiddy似乎在读者的眼中:-P但肯定
void bar_function(foo bar::*P_foo)
需要一个成员函数指针。那么你怎么能说我们不是在讨论成员函数指针呢?它需要一个成员指针
foo
是一个类,而不是函数指针typedef。
void bar_function(foo bar::*p_foo)
{
    (this->*p_foo).foo_function();
}