首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >令人困惑的typedef涉及到类范围

令人困惑的typedef涉及到类范围
EN

Stack Overflow用户
提问于 2015-11-18 02:37:20
回答 2查看 1.3K关注 0票数 56

我正在阅读一个C++项目的代码,它包含一些如下形式的代码:

namespace ns {
    class A {};
    class B {};
}

struct C {
    typedef ns::A* ns::B::* type;
};

有人能解释一下typedef行的意思吗?type似乎是指向ns::B成员的某种指针,指向ns::A,但我不确定。

真实代码中的AB类不是空的,但我认为它在这里并不重要。这是一个live example

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-18 02:47:59

ns::B::*

B的成员变量指针。那么ns::A*就是它的类型。

所以整个声明意味着

ns::A*类型的B的成员变量指针

票数 39
EN

Stack Overflow用户

发布于 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;
}
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33764533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档