指针数组和类型转换

Arrays of pointers and type conversions

本文关键字:类型转换 数组 指针      更新时间:2023-10-16

我正在做一个项目,需要我创建非同构数组的数组

假设数组为"arr"。

则arr[0]可能是整数数组,arr[1]可能是字符串数组,等等

为此,我使用了指针。我有一个基类:

 class base_class;

然后是模板类

template<typename T>     
class temp_class : public base_class{ 
    private:
        T* ptr;
        .....
    public:
        void input(){
        //do something}
};

现在定义类arr。

class arr{
    private:
        base_class* ptr;
        ....
    public:
        void take_data(){
            temp_class<int>* temp;
            temp = static_cast<temp_class<int>*> (ptr)//OR (ptr+1)
            temp->input();
        }
}

但我得到一个分割错误(或类似的东西)。我猜这个问题是由于两个不同类型的指针指向同一个对象,而"input"函数只对其中一个有意义。

如何解决这个问题?有没有其他方法,我可以实现我的想法,没有这些容易出错的指针?

这样做的一个选择是使用Boost Variant c++库中适当定义的Variant类型作为数组元素。

关于Variant的Boost文档在这个链接

在该链接的基础教程中有关于如何使用Boost variant的std::vector的描述。