C ++动态向下转换shared_ptr向量

时间:2019-03-10 13:59:38

标签: c++ templates casting

编辑:

基本上,我想要实现的是实现一副可以按任何属性排序的卡片组。属性可以是整数,双精度型或其他类型,并且可以“较小时更好”或“较大时更好”。我目前想到的设计是对Card对象使用属性向量,并重载<运算符以能够对卡片进行排序。


我试图找到一种方法来向下存储向量中的shared_ptr元素。我目前需要尝试所有可能的类型,以便转换为正确的类型。

我的问题是我想支持许多类型,而我目前的方法扩展性不是很好。根据我的阅读,不可能在运行时获取类型,但我认为可能有一个聪明的方法可以使用容器类或类似的方法来实现。

这是我到目前为止获得的代码(请参阅Card类中的print_attributes()函数)。

yield scrapy.FormRequest.from_response(response.css('form'), formdata={'Item': 'Whirlpool Washing Machine'})

这是我关于堆栈溢出的第一个问题,因此,如果我的问题不清楚或需要更多详细信息,请不要犹豫告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

您不能使用动态强制转换来实现此目的。您可以使用的是一个虚函数:

class AttributeIface{
    public:
        virtual void print_value() = 0;
};

cout << get<0>(a) << " has value => ";
get<1>(a)->print_value();
cout << '\n';

我将作为练习来打印中间模板的名称。


//TODO: Why when the class is empty the casts doesnt work??

因为动态类型转换只能用于多态类型,并且如果基础没有虚函数,则它不是多态的。