我正在尝试实现一个字符工厂,但是我不能理解如何为虚拟基类创建一个泛型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;可能是设计上的问题,我解决不了。我不能使用原始指针,如果我可以的话我认为
character = new Enemy(...);会起作用的。我找到的所有类型转换示例都使用默认构造函数。
谢谢你的帮助
https://stackoverflow.com/questions/52318863
复制相似问题