C++ 为什么我不能直接调用通过指向成员的指针访问的实例的方法
例如,我得到了一个内部类:C++ 为什么我不能直接调用通过指向成员的指针访问的实例的方法,c++,pointer-to-member,C++,Pointer To Member,例如,我得到了一个内部类: struct Foo { void test() {} }; 还有一个外层舱: struct Bar { Foo foo; }; 然后大体上: 关于bar.*pFoo.test的错误是:成员引用基类型“Foo-bar::*”不是结构或联合,那么bar.*pFoo.test之间有什么不同;Foo-Foo=bar.*pFoo;食物测试 正如注释中所暗示的,.*的运算符优先级低于 因此,bar.*pFoo.test;解析为bar.*pFoo.test;正在尝试访
struct Foo {
void test() {}
};
还有一个外层舱:
struct Bar {
Foo foo;
};
然后大体上:
关于bar.*pFoo.test的错误是:成员引用基类型“Foo-bar::*”不是结构或联合,那么bar.*pFoo.test之间有什么不同;Foo-Foo=bar.*pFoo;食物测试 正如注释中所暗示的,.*的运算符优先级低于 因此,bar.*pFoo.test;解析为bar.*pFoo.test;正在尝试访问pFoo的测试成员 由于pFoo是Foo-Bar::*类型的成员指针,因此这不是有效的表达式。只有类类型才能显示在成员访问操作符的左侧。将伪析构函数调用语法放在一边,而成员指针不是
第二个示例相当于表达式条。*pFoo.test;相反。正如注释中所暗示的,.*的运算符优先级低于 因此,bar.*pFoo.test;解析为bar.*pFoo.test;正在尝试访问pFoo的测试成员 由于pFoo是Foo-Bar::*类型的成员指针,因此这不是有效的表达式。只有类类型才能显示在成员访问操作符的左侧。将伪析构函数调用语法放在一边,而成员指针不是
第二个示例相当于表达式条。*pFoo.test;相反。。函数调用的等级高于取消引用。@BoBTFish谢谢,我以前真的不知道指向成员的指针的优先级。函数调用的等级高于取消引用。@BoBTFish谢谢,我以前真的不知道指向成员的指针的优先级
Bar bar{};
Foo Bar::* pFoo = &Bar::foo;
bar.*pFoo.test(); // does not work
Foo foo = bar.*pFoo;
foo.test(); // works;