c ++如何从upcasted派生中转发

时间:2017-12-07 20:42:41

标签: c++ inheritance upcasting downcast

我有一个名为" package"这是派生" shader_package"的基础。

包实例通常在名为load的函数中独占生成。它有一个指向package的指针作为返回参数。因此,我也可以返回由于继承而从包派生的每个类。但是,当传递时,类型信息丢失了(正确吗?)后来我实际上不知道原来的类是什么。

然而,在我的情况下,这不应该是一个问题。加载器返回的东西应该在类构造函数或赋值运算符中使用,然后使用相关包derivertive中的信息来初始化其成员变量。

如何在不使用联合或变体类型的情况下正确执行此操作?

编辑:

一些伪代码说明了我想要完成的事情

class package{
//actual contents are not relevant. The base doesnt have any virtual functions. Only data
}
.
class shader_package:public package{
private:
    shaderData data;
public:
//getters setters and other standard stuff. Not really relevant
}
.
.
package* import(const char* path){
    string extension = getExtension(path);
    if(extension == ".shader"){
        shaderData data;
        //somehow populate shaderData
        return new shader_package(shaderData);
    }
    /* Check for other types and return other derived packages*/
}
.
.
.
main{
    shader nShader(import("pathToShader"));
    /*Do stuff with it*/
}

0 个答案:

没有答案