1

为什么我不能有这样的成员指针

#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;
}

http://ideone.com/UabI61

我做错了什么?

4

2 回答 2

4

指向成员的指针本质上是对象的偏移量。也就是说,如果您有一个FE对象,则指向成员的指针表示距每个FE对象的地址的恒定偏移量。一个static对象不会与每个FE对象有一个恒定的偏移量。因此,&FE::poolisPool*和 not的类型Pool FE::*。这两种指针类型不兼容。

于 2013-12-12T23:40:53.427 回答
0

pool是一个恰好位于FE;范围内的全局变量 指向成员的指针仅指向类实例的成员。

于 2013-12-12T23:36:24.367 回答