typedef声明语法

时间:2010-04-19 12:35:45

标签: c++ syntax boost typedef

前几天我查看了激励源,发现了一些有趣的 typedef

“boost \ detail \ none_t.hpp”中有一段代码:

namespace boost {

namespace detail {

struct none_helper{};

typedef int none_helper::*none_t ;

} // namespace detail

} // namespace boost

我没有看到类似早期的语法,也无法解释这种感觉。

这个 typedef 在boost :: detail命名空间中引入名称“none_t”作为int的指针。

语法是什么?

typedef int none_helper :: * none_t ”与“ typedef int * none_t ”之间有什么区别?

3 个答案:

答案 0 :(得分:3)

语法用于指向成员的指针 - 此处它将typedefs none_t作为指向int的{​​{1}}数据成员的指针。

可以使用语法,例如这样:

none_helper

InformIT在成员指针上有一个article,其中包含更多详细信息。

答案 1 :(得分:1)

  • typedef int* none_t;为指向整数的指针引入了类型别名。
  • typedef int non_helper::*none_t;为指向non_helper类的整数成员的指针引入了类型别名。

答案 2 :(得分:1)

none_t是指向int类型none_helper的成员变量的指针。

struct none_helper
{
  int x1;
  int x2;
};

int none_helper::* ptm = &none_helper::x1;
^^^^^^^^^^^^^^^^^^
     none_t