2
我有下面的類:如何使用「COUT」打印數據成員的地址(類偏移)
class A
{
public:
double a;
float b;
double c;
};
我要打印數據成員在課堂上的偏移,比我用:
double A::* pm = &A::a;
cout << *(int *)&pm << endl;
它運作良好,並打印「0」,但我不希望使用中間變量pm
cout << *(int *)&A::a << endl;
我編譯錯誤機智H:無效類型轉換
你應該澄清你的問題,因爲您要打印的是不是一個偏移,偏移量應該是成員地址和類之間的區別實例地址,正如@WhozCraig'std :: offsetof'所提到的那樣。 – 2014-09-11 08:30:59
@RudolfsBundulis:這可能是薄片狀的,非可移植的方式來打印件的偏移,如果這是構件指針如何表示(這是通常的情況),並且如果成員指針恰巧有大小爲'int'相同。但是,是的,'std :: offsetof'是獲得偏移量的便攜方式。 – 2014-09-11 08:40:50
@WhozCraig我不相信'的std :: offsetof'存在。這是一個宏,它不駐留在'std'中。 – 2014-09-11 08:55:03