c++ - 什么是 A B::* 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::* 表示“指向 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/

相关文章:

c++ - 将数据从 Qt 传递到 C++ 中的原始类型

c++ - 如何在 Qt 中为 QMainWindow 切换 'always on top' 而不会导致闪烁或闪烁?

c++ - TR1 提供的所有内容现在都可以在 C++14 中使用并且易于使用吗?

c++ - 预先构建grpc和find_package

c++ - vector 的排序

C++ 从指针 vector 中删除元素

c++ - 在 C++ 中查找字符串中的子字符串标记

c++ - 计算点云中每个点的法线?

C++如何生成n维元组的笛卡尔积集

C++ - 查看 hWnd 窗口是否响应?