小编Kes*_* V.的帖子

从父类数组返回子类 C++

class Component {
    // Code here
};

class TransformComponent : public Component {
    // Code here
};

class Entity:
    public:
        Component components[25];
        
        TransformComponent *getTransform() {
            for(int i = 0; i < 25; i++) {
                if(typeid(components[i]) == typeid(TransformComponent())) {return *(components + i);}
            }
        }
};
Run Code Online (Sandbox Code Playgroud)

我有一个组件数组,里面可以是“Component”的任何子类,例如“TransformComponent”。问题是,在编译时,计算机认为组件数组仅填充有“Component”对象。该函数应该返回一个“TransformComponent”,编译器将其视为错误,即使我返回的数组中的元素是 TransformComponent。有没有办法解决这个问题(最好是简单的)?

c++ arrays oop

1
推荐指数
1
解决办法
90
查看次数

标签 统计

arrays ×1

c++ ×1

oop ×1