0

他のコードで仮想メンバー関数のコードを確認する必要があります。では、正しいコードを指すポインターを取得するにはどうすればよいでしょうか。

class MyInterface {
    public:
        virtual void VirtualMethod() = 0;
};

class MyImplementation : public MyInterface {
    private:
        int m_value;
    public:
        MyImplementation() : m_value(0) { }
        virtual void VirtualMethod() {
            m_value = 1;
        }
};

void main(int argc, char* argv[])
{
    MyInterface* pInterface = new MyImplementation();
    // In my real code on the following line, we do not have access to the declaration of MyImplementation
    unsigned int* pFunctionPointer = (unsigned int*)pInterface->VirtualMethod;
    // Now we want to access the compiled code of MyImplementation::VirtualMethod.
    printf("0x%08x\n", *pFunctionPointer);
}

私の実際のコードでは、私のドリフトを取得した場合、「メイン」関数から MyImplementation 宣言にまったくアクセスできません。

4

1 に答える 1