我有一堆类,它们都从公共基类继承相同的属性.基类实现了一些在一般情况下工作的虚函数,而每个子类为各种特殊情况重新实现了这些虚函数.
情况就是这样:我希望这些子类对象的特殊性是可以消耗的.本质上,我想实现一个expend()函数,该函数会导致对象丢失其子类标识,并恢复为基类实例,并在基类中实现通用案例行为.
我应该注意,派生类不会引入任何其他变量,因此基类和派生类在内存中的大小应该相同.
我愿意破坏旧对象并创建一个新对象,只要我可以在同一个内存地址创建新对象,那么现有的指针就不会被破坏.
以下尝试不起作用,并产生一些看似意外的行为.我在这里错过了什么?
#include <iostream>
class Base {
public:
virtual void whoami() {
std::cout << "I am Base\n";
}
};
class Derived : public Base {
public:
void whoami() {
std::cout << "I am Derived\n";
}
};
Base* object;
int main() {
object = new Derived; //assign a new Derived class instance
object->whoami(); //this prints "I am Derived"
Base baseObject;
*object = baseObject; //reassign existing object to a different type
object->whoami(); //but it *STILL* prints "I …Run Code Online (Sandbox Code Playgroud) 我想使用Blink(或Webkit,Gecko,KHTML,......任何类似的布局引擎;我不挑剔)作为用于从C++程序渲染结构化数据的布局引擎.我希望能够将函数绑定到DOM事件,以响应用户交互.
换句话说,我不想使用HTTP协议,Javascript,甚至是图像资源的URI(我计划将数据库中的图像和视频内容直接传送到DOM中,假设可能).我只想要一个布局引擎,让我通过C++函数调用从头开始组装DOM树,让我将函数指针绑定到用户交互事件.
我在查找有关如何执行此操作的信息时遇到了很多麻烦.很多信息似乎都集中在更高级别的Web浏览器上,比如在应用程序中嵌入功能齐全的Web浏览器框架.我不知道是否有某种浏览器引擎的"小子集"在那里,我可以使用,而且可能是什么上手最快/最简单的方法.