说SomeStruct
定义为:
struct SomeStruct {
int member;
};
这意味着什么?
&SomeStruct::member
int SomeStruct::*
我遇到这个,试图输出它的类型信息,但仍然无法弄清楚其含义。以下是一个工作示例:
#include <iostream>
#include <typeinfo>
using namespace std;
struct SomeStruct {
int member;
};
int main(int argc, const char *argv[])
{
cout << typeid(&SomeStruct::member).name() << endl;
cout << typeid(int SomeStruct::*).name() << endl;
return 0;
}
在我的MBP上由i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
编译,输出为:
M10SomeStructi
M10SomeStructi
答案 0 :(得分:4)
int SomeStruct::*
被称为“指向成员的指针”,在本例中是指向SomeStruct
成员的指针。这是 NOT 严格地指向成员函数的指针(尽管这是此语法的最常见用法)。
&SomeStruct::member
是对member
SomeStruct
成员的引用。
如果您想了解有关该主题的更完整信息,请here's a decent article on the topic。
而且,C++ FAQ lite中有关该主题的强制性部分。
答案 1 :(得分:3)
这是指向成员函数/数据成员的指针的语法。
int SomeStruct::*
是指针的类型(指向int
的{{1}}数据成员的指针。
SomeStruct
产生一个上述类型的指针。