0
檢索一個實例,我使用具有C++編程窗口和具有下面的代碼:不能訪問虛擬功能在使用CONTAINING_RECORD
class A
{
public:
virtual void Func1() {}
void Func2() {}
}
class B : public A
{
public:
__override virtual void Func1() {}
}
我提出使用LIST_ENTRY乙對象的雙重鏈表並試圖訪問在一個元件這個名單如下方式:
LIST_ENTRY * pEntry; // I got this pointer using RemoveHeadList
A * pA;
pA = CONTAINING_RECORD (pEntry, A, m_le);
pA->Func2(); // works fine
pA->Func1(); // Access violation
正如你看到的,使用CONTAINING_RECORD檢索的指針不能調用虛函數。什麼可能是錯的?謝謝你的幫助。
[此鏈接](http://stackoverflow.com/questions/2247270/access-violation-exception-when-calling-a-method)指出我正確的方向,我發現對象A的內存檢索在我訪問此元素之前,CONTAINING_RECORD已被覆蓋。感謝您的輸入。 – jiangok