首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在dynamic_pointer_cast之后调用派生类的构造函数

在dynamic_pointer_cast之后调用派生类的构造函数
EN

Stack Overflow用户
提问于 2018-09-14 01:27:39
回答 1查看 294关注 0票数 1

我正在尝试实现一个字符工厂,但是我不能理解如何为虚拟基类创建一个泛型shared_ptr,然后将它转换为一个在构造函数中带有参数的派生类。在我的示例中,我的虚拟基类不能在构造函数中接受参数,但我需要在派生类的构造函数中使用它们。

代码语言:javascript
运行
复制
std::shared_ptr<Character> CharacterFactory::createCharacter(Character::Type type, Character::SubType subtype, const TextureHolder &textures, sf::Vector2u windowSize) {

    std::shared_ptr<Character> character;

    if ( type == Character::enemy ) {
        std::dynamic_pointer_cast<Enemy>(character)(subType, textures, windowSize);

    } else if(type == Character::player) {
        //cast to player ...
    }

    return character;

可能是设计上的问题,我解决不了。我不能使用原始指针,如果我可以的话我认为

代码语言:javascript
运行
复制
character = new Enemy(...);

会起作用的。我找到的所有类型转换示例都使用默认构造函数。

谢谢你的帮助

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52318863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档