什么是 A B::* func() 定义

  • 本文关键字:func 定义 c++
  • 更新时间 :
  • 英文 :


一个现已删除的问题与此类似:

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::* 表示"指向类型为 AB的数据成员的指针。例如:

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();

最新更新