一个现已删除的问题与此类似:
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::*
到底是什么?
最佳答案
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();
关于c++ - 什么是 A B::* func() 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332368/