小编dwk*_*dwk的帖子

实例化后是否可以更改C++对象的类?

我有一堆类,它们都从公共基类继承相同的属性.基类实现了一些在一般情况下工作的虚函数,而每个子类为各种特殊情况重新实现了这些虚函数.

情况就是这样:我希望这些子类对象的特殊性是可以消耗的.本质上,我想实现一个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)

c++ inheritance

41
推荐指数
8
解决办法
1万
查看次数

使用Blink作为前端布局引擎 - 从哪里开始?

我想使用Blink(或Webkit,Gecko,KHTML,......任何类似的布局引擎;我不挑剔)作为用于从C++程序渲染结构化数据的布局引擎.我希望能够将函数绑定到DOM事件,以响应用户交互.

换句话说,我不想使用HTTP协议,Javascript,甚至是图像资源的URI(我计划将数据库中的图像和视频内容直接传送到DOM中,假设可能).我只想要一个布局引擎,让我通过C++函数调用从头开始组装DOM树,让我将函数指针绑定到用户交互事件.

我在查找有关如何执行此操作的信息时遇到了很多麻烦.很多信息似乎都集中在更高级别的Web浏览器上,比如在应用程序中嵌入功能齐全的Web浏览器框架.我不知道是否有某种浏览器引擎的"小子集"在那里,我可以使用,而且可能是什么上手最快/最简单的方法.

c++ linux gecko webkit blink

6
推荐指数
0
解决办法
898
查看次数

标签 统计

c++ ×2

blink ×1

gecko ×1

inheritance ×1

linux ×1

webkit ×1