c++ - 将 Base 的实例向下转换为没有成员的派生类
问题描述
我继承了(不是双关语)一些具有以下内容的代码:
class Base {
public:
static Base* GetInstance() {
return pInstance; //static member (initialized as Singleton with new Base();
}
void Foo();
};
class Derived : public Base {
Derived() {}
public:
Bar();
};
它的用法如下所示:
((Derived*)Base::GetInstance())->Bar();
这是定义的行为吗?
它适用于 MSVC,我理解为什么可以定义它,但我不知道如何验证它是否是(除了寻求一些智慧)。
解决方案
推荐阅读
- kiwi-tcms - 从 v6.4 迁移到 v7.2 失败,并显示“列 'execution_id' 不能为空”
- java - 如何运行构建后生成的maven项目的jar文件?
- reactjs - 有什么方法可以让我知道在 Ag -grid 中滚动时是否已到达记录的末尾?
- javascript - 使用多个 Google 自动完成时出现“未定义”
- php - 为网站上的每个页面添加标识符
- javascript - 使用 MatterJS 防止强制拖动物体穿过其他物体
- html - 如何在 Vue Cli 生成的 WPA 项目的标题内编辑自动注入的网站图标标签?
- docker - 如何使用 docker 将 metricbeat 连接到 elasticsearch 和 kibana
- c++ - 如果输入偶数,C++ 中的显示问题
- html - vue,如何以编程方式动态地单击将组件添加到 DOM 特定位置?