未调用预期的c++虚拟函数
intended c++ virtual function not getting called
这是我的代码
#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;
}
我应该打印createRenderstream,而我正在打印createStream?
尝试
PIPlayback pPlayBackInterfcace = (PIPlayback)(CAudioClientInterface*) pObj;
您只能强制转换为void*
并返回到原始类型CAudioClientInterface*
。强制转换为另一种类型是未定义的行为。
相关文章:
- 虚拟决赛作为安全
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 如何在C++中获得"静态纯虚拟"功能?
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 大小虚拟继承中的派生类
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- std::is_trivially_copyable_v 关于虚拟功能
- 删除C++继承中虚拟类成员的代码重复
- 子类地址等于虚拟基类地址?
- 当覆盖存在时调用基本虚拟"binded to object"函数
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 是否可以使用基类非虚拟方法中的派生类虚拟方法?