gpt4 book ai didi

c++ - 指针数组和类型转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:48 28 4
gpt4 key购买 nike

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

假设数组是“arr”。

Then arr[0] might be array of integers, arr[1] might be array of strings, etc.

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

 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();
}
}

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

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

最佳答案

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

Variant 的 Boost 文档可用 at this link

在该链接的基本教程中描述了如何使用 Boost Variants 的 std::vector。

关于c++ - 指针数组和类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091934/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com