指针数组和类型转换
Arrays of pointers and type conversions
我正在做一个项目,需要我创建非同构数组的数组。
假设数组为"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的描述。
相关文章:
- 在c++中为double类型的数组创建一个unique_ptr
- C++ 将 CIN 值存储到任何类型的数组中
- 如何将文本文件的特定行读取到 int 类型的数组中C++?
- C++ - 将结构类型的数组传递给用户定义的函数
- 是否可以创建一个用户定义的文本,将字符串文本转换为 own 类型的数组?
- 在C++如何从数组中提取成员并返回成员类型的数组?
- C++中的集合(异构类型的数组)
- 将基本类型数组中的内存重新用于不同(但仍然是基本)类型的数组合法吗
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 隐式类型转换为数组
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- 在 c++ 中动态强制转换 ** 数组
- 分配具有主参数类型的数组时出现问题
- 是否可以将一种类型的数组转换为大小不同的另一种类型的数组?
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 如何将std :: Basic_string类型转换为char类型的数组
- 用于递归模板求值的强制转换数组类型
- 正在将char类型的数组转换为int变量
- 如何定义运算符,以便可以将用户定义类型的数组转换为基元类型的数组