小编ele*_*ace的帖子

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

我正在尝试实现一个字符工厂,但我无法理解如何创建一个通用的shared_ptr到虚拟基类,然后将其转换为构造函数中带有参数的派生类.在我的示例中,我的虚拟基类不能在构造函数中获取参数,但我需要在派生类的构造函数中使用它们.

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;
Run Code Online (Sandbox Code Playgroud)

可能这是一个设计问题,我无法解决它.我不能使用原始指针,如果我能想到的话

character = new Enemy(...);
Run Code Online (Sandbox Code Playgroud)

本来会有用的.我发现的所有铸造示例都使用默认构造函数.

谢谢您的帮助

c++ polymorphism factory casting c++11

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

标签 统计

c++ ×1

c++11 ×1

casting ×1

factory ×1

polymorphism ×1