我正在阅读一个C++项目的代码,它包含一些如下形式的代码:
namespace ns {
class A {};
class B {};
}
struct C {
typedef ns::A* ns::B::* type;
};
有人能解释一下typedef
行的意思吗?type
似乎是指向ns::B
成员的某种指针,指向ns::A
,但我不确定。
真实代码中的A
和B
类不是空的,但我认为它在这里并不重要。这是一个live example。
发布于 2015-11-18 02:47:59
ns::B::*
是B
的成员变量指针。那么ns::A*
就是它的类型。
所以整个声明意味着
ns::A*
类型的B
的成员变量指针
发布于 2015-11-18 03:07:21
The answer by @vsoftco已经回答了这个问题的核心。这个答案展示了如何使用这样的typedef
。
#include <iostream>
#include <cstddef>
namespace ns {
struct A {};
struct B
{
A* a1;
A* a2;
};
}
struct C {
typedef ns::A* ns::B::*type;
};
int main()
{
C::type ptr1 = &ns::B::a1;
C::type ptr2 = &ns::B::a2;
ns::B b1;
b1.*ptr1 = new ns::A; // Samething as b1.a1 = new ns::A;
return 0;
}
https://stackoverflow.com/questions/33764533
复制相似问题