[英]C++ typedef with strange scope resolution operator
我必须移植一些C ++代码并发现以下奇怪的typedef:
typedef uint32_t SomeClassName::* ptr;
目标编译器是MSVC ++。 据我了解,这只是为uint32_t*
创建了一个名为ptr
的别名。 具有SomeClassName::
的部分没有任何用处,并且应由兼容的C ++编译器视为错误。 我是对还是错?
另外,在SO上发现了异常范围解析运算符问题,它可能回答了这个问题,但是我不确定。
这是指向成员的指针。 特别是ptr
类型的变量可以指向SomeClassName
任何uint32_t
数据成员。 可以这样使用:
struct Foo {
int a;
int b;
float c;
};
Foo foo;
int Foo::* ptr;
ptr = &Foo::a;
foo.*ptr = 10; //Set foo.a to 10
ptr = &Foo::b;
foo.*ptr = 15; //Set foo.b to 15
//ptr = &Foo::c; //Won't compile
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.