簡體   English   中英

令人困惑的typedef涉及類范圍

[英]A confusing typedef involves class scope

我正在閱讀C ++項目的代碼,它包含以下形式的代碼:

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

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

有人可以解釋typedef行的含義嗎? type似乎是某種指向ns::B成員的指針,指向ns::A ,但我不確定。

真實代碼中的A類和B類不是空的,但我認為這與此無關。 這是一個實例

ns::B::*

是一個指針到構件變量B 然后ns::A*是它的類型。

所以整個聲明意味着

ns::A*類型B的指針到成員變量

@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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM