gpt4 book ai didi

C++ Boost 任何尝试

转载 作者:行者123 更新时间:2023-11-30 02:44:50 24 4
gpt4 key购买 nike

<分区>

我无权访问 Boost 库,我正在尝试实现类似于 Boost any 的东西(一个可以存储多种类型的容器)。我在 http://learningcppisfun.blogspot.co.uk/2007/09/boostany.html 找到了一个例子,但是当我编译它时出现段错误。调试它似乎表明它是 Variant 的析构函数导致的问题。当我将析构函数注释掉时,它工作正常——尽管它正在泄漏内存。谁能解释发生了什么?谢谢!

#include <iostream>
#include <vector>

using namespace std;

class BaseHolder
{
public:
virtual ~BaseHolder(){}
};

template<typename T>
class HoldData : public BaseHolder
{
public:
HoldData(const T& t_) : t(t_){}
T t;
};

class Variant
{
public:
template<typename T>
Variant(const T& t) : data(new HoldData<T>(t)){}
~Variant(){delete data;}
BaseHolder* data;
};

int main(){
vector<Variant> a;
int x = 10;
double y = 3.15;
a.push_back(x);
a.push_back(y);

cout << dynamic_cast<HoldData<int> *>(a[0].data)->t << endl;
cout << dynamic_cast<HoldData<double> *>(a[1].data)->t << endl;

return 0;
}

输出:

10
3.5

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