现在删除的问题与此类似:
struct A { };
struct B {
A read();
};
A B::* read()
{
return A{};
}
此代码将给出错误:
error: cannot convert ‘A’ to ‘A B::*’ in return
return A{};
正如我们所看到的,这不是read()
的类外定义,而是定义返回A B::*
的非成员函数。在这种情况下,A B::*
究竟是什么?
答案 0 :(得分:5)
A B::*
表示"指向B
数据成员A
的指针。例如:
struct B {
A x;
};
...
B b;
A B::*ptr = &B::x; // ptr is the variable declared here.
b.*ptr = foo; // same as b.x = foo;
在你的代码的上下文中,它意味着一个函数(不是成员函数)返回一个指向成员的指针。你可能有
A B::*foo() {
return &B::x;
}
...
A B::*ptr = foo();