【发布时间】:2014-08-02 05:17:50
【问题描述】:
我正在做一个需要我创建非同构数组的数组的项目。
假设数组是“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();
}
}
但是我遇到了分段错误(或类似的错误)。我猜这个问题是由于两种不同类型的指针指向同一个对象,而“输入”函数只对其中一个有意义。
我该如何解决这个问题?没有这些容易出错的指针,还有其他方法可以实现我的想法吗?
【问题讨论】:
-
谷歌c++歧视联合
-
我得到了与工会相关的结果。 “歧视性工会”是“工会”的不同形式吗?
-
是的,它是一个联合以及一个单独的字段,可让您了解联合值的当前类型。查看我投票最多的答案:stackoverflow.com/questions/18577404/…
标签: c++ class pointers object mingw