1

これは私のコード

#include "stdafx.h"**

class IPlayback
{
      public:
           virtual void createRenderStream() = 0; 
};

class ICapture 
{
      public:
          virtual void createCaptureStream() = 0; 

};

class IAudioStackInterface
{
   public:
      virtual void createStream() = 0; 
};

class CAudioClientInterface : public IAudioStackInterface,
                              public ICapture,
                              public IPlayback

{
        void createCaptureStream()
        { 
            printf("\n i am in createCaptureStream");
        }

        void createRenderStream()
        {
            printf("\n i am in createRenderStream");
        }

        void createStream()
        {
            printf("\n i am in createStream");
        }
};


typedef IAudioStackInterface* PIAudioStackInterface;
typedef ICapture* PCapture;
typedef IPlayback* PIPlayback;
typedef void* PVOID;

int main()
{
    PVOID pObj = new CAudioClientInterface();
    PIPlayback pPlayBackInterfcace = (PIPlayback) pObj;
    pPlayBackInterfcace->createRenderStream();
    return 0;
}

createStream を印刷しているのに、createRenderstream を印刷する必要がありますか?

4

1 に答える 1

5

試す

PIPlayback pPlayBackInterfcace = (PIPlayback)(CAudioClientInterface*) pObj;

void*元の型へのキャストとその逆のキャストのみが許可されていCAudioClientInterface*ます。別の型へのキャストは未定義の動作です。

于 2013-07-25T10:33:41.353 に答える