为什么我不能这样pointer to member:
#include <iostream>
#include <stdlib.h> /* malloc, free, rand */
using namespace std;
class Pool{};
struct FE{
static Pool pool;
};
Pool FE::pool;
int main() {
Pool FE::* pmd = &FE::pool;
return 0;
}
我做错了什么?
答案 0 :(得分:4)
指向成员的指针基本上是对象的偏移。也就是说,如果您有一个FE
对象,则指向成员的指针指示与每个FE
对象的地址的常量偏移量。 static
对象不会与每个FE
对象具有常量偏移量。因此,&FE::pool
的类型为Pool*
而非Pool FE::*
。两种指针类型不兼容。
答案 1 :(得分:0)
pool
是一个全局变量,恰好位于FE
的范围内;指向成员的指针只指向实例类的成员。