指针和类型转换的数组

时间:2014-08-02 05:17:50

标签: c++ class pointers object mingw

我正在做一个项目,要求我 创建非同类数组

假设数组是“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();
        }
}

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

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

1 个答案:

答案 0 :(得分:1)

执行此操作的一个选项是使用Boost Variant C ++库中适当定义的Variant类型作为数组元素。

Variant的Boost文档可用at this link

在该链接的基础教程中有一个如何使用std :: vector of Boost Variants的描述。