C++ 类型定义类型*类型::*,是什么?

C++ 类型定义类型*类型::*,是什么?,c++,C++,我有以下代码: struct myType { myType * ptr; }; typedef myType * myType ::* other_type; 第二行定义是什么?这是一个返回myType指针的成员函数还是其他什么?将other\u type定义为指向myType成员的指针,其中所述成员本身就是指向myType的指针。例如,您可以这样使用它: other_type x = &myType::ptr; myType mine; mine.*x = &min

我有以下代码:

  struct myType { myType * ptr; };
  typedef myType * myType ::* other_type;

第二行定义是什么?这是一个返回myType指针的成员函数还是其他什么?

other\u type
定义为指向
myType
成员的指针,其中所述成员本身就是指向
myType
的指针。例如,您可以这样使用它:

other_type x = &myType::ptr;
myType mine;
mine.*x = &mine;

我不知道你为什么要这样做。

我想,这样写的话会可读性更好一些:
typedef myType*myType::*other\u type(没有几个空格)等效的C++11语法稍微干净一些:
使用other_type=myType*myType::*尽管指向成员语法的指针仍然很笨拙。因为我们在主题中,所以指向方法语法的指针是
using method=return\u type(Object::*)(arg0\u type,arg1\u type,…)C++是创建此类代码怪物的终极语言。我最喜欢的是
const int const*MyClass::MyMethod(const int const*param)const{}
谢谢你的帮助!很遗憾,我们正在开发的产品中包含了这段代码。我宁愿死也不愿写这样的代码,因为其他人甚至需要花时间来解决格式问题。@user3498783:不客气。这不一定是一件丢脸的事——你在开发产品,你可以把它做得更好@我希望我能被允许做那样的事情,但我的经理不允许。这真的让我哭了:(@spook一半的
const
什么都不做:把它们移到
*
的远端。