我想看看是否有一種方法來獲取指向具有多繼承的類的數據成員的指針。有沒有辦法消除他們的歧義,並仍然得到正確的抵消?多繼承繼承的數據成員的指針
struct Foo
{
int BarData;
};
struct FooBarBaseA : public Foo
{
int DataA;
};
struct FooBarBaseB : public Foo
{
int DataB;
};
struct FooBar : public FooBarBaseA, public FooBarBaseB
{
};
Bar FooBar::* p1 = &FooBar::FooBarNodeA::BarData; // should be 0?
Bar FooBar::* p2 = &FooBar::FooBarNodeB::BarData; // should be 4 or 8?
編輯: 我想他們是2個獨立的價值,但兩者
int FooBar::FooBarBaseA::Foo:: *p1 = &FooBar::FooBarBaseA::Foo::BarData; and
int FooBar::FooBarBaseB::Foo:: *p2 = &FooBar::FooBarBaseB::Foo::BarData;
一代產量相同的值,他們不應是多種不同偏移如果繼承樹不虛?
你可以看到,他們得到使用這個小程序的不同偏移:'FooBar的X; ptrdiff_t d1 =(char *)&x.FooBarBaseA :: BarData - (char *)&x; ptrdiff_t d2 =(char *)&x.FooBarBaseB :: BarData - (char *)&x; cout << hex << d1 <<「」<< hex << d2 << endl;'獲取指向成員的指針似乎不起作用 - 我嘗試使用每個編譯器都會遇到一個模糊錯誤。 – dasblinkenlight