【发布时间】:2019-12-02 10:04:30
【问题描述】:
例如我有一个内部类:
struct Foo {
void test() {}
};
还有一个外部类:
struct Bar {
Foo foo;
};
然后在main():
Bar bar{};
Foo Bar::* pFoo = &Bar::foo;
bar.*pFoo.test(); // does not work
Foo foo = bar.*pFoo;
foo.test(); // works;
bar.*pFoo.test()的错误是:member reference base type 'Foo Bar::*' is not a structure or union,那么bar.*pFoo.test();和Foo foo = bar.*pFoo; foo.test();有什么区别呢?
【问题讨论】:
-
Precedence。函数调用的排名高于取消引用。
-
@BoBTFish 谢谢,之前我真的不知道指向成员的优先级
标签: c++ pointer-to-member