auto_array

stl里面只有一个auto_ptr,没有auto_array,欢迎大家指教。

/*

 auto_array.h

 sdragon 2006-11-23 14:03:20

*/
#ifndef AUTO_ARRAY_H_20061123140320
#define AUTO_ARRAY_H_20061123140320

#include <memory>
using std::auto_ptr;

template<typename T>
class auto_array:public auto_ptr<T>
{
public:
    auto_array():auto_ptr<T>(){}
    explicit auto_array(T* p):auto_ptr<T>(p){}
    auto_array(size_t n):auto_ptr<T>(new T[n]){}    //ext

    ~auto_array()
    {
        if(this->_M_p){
            delete []this->get();
            this->_M_p = NULL;
        }
    }
};

#endif //AUTO_ARRAY_H_20061123140320 

 
以下是一个简单的测试程序示例,用于测试 `VSB::UploadDataToBlackBox()` 函数: ```cpp #include <iostream> #include <queue> #include "vsb_axis_data.h" // 假设包含了 vsb_axis_data_t 和 vsb_axis_data_array 的定义 // 模拟一个接收到的数据队列 std::queue<vsb_axis_data_t> received_tpdo_queue; // 模拟 AxisDataPool 类 struct AxisDataPool { static vsb_axis_data_array* in_vsb_data_array; }; // 初始化 AxisDataPool 类的静态成员变量 vsb_axis_data_array* AxisDataPool::in_vsb_data_array = nullptr; // 模拟 m_received_tpdo_queue 是否为空的判断 bool isReceivedTpdoQueueEmpty() { return received_tpdo_queue.empty(); } // 模拟 m_received_tpdo_queue 的 pop() 操作 bool popFromReceivedTpdoQueue(vsb_axis_data_t& data) { if (!received_tpdo_queue.empty()) { data = received_tpdo_queue.front(); received_tpdo_queue.pop(); return true; } return false; } class VSB { public: static void UploadDataToBlackBox(); }; void VSB::UploadDataToBlackBox() { if (isReceivedTpdoQueueEmpty()) return; vsb_axis_data_t vsb_data_tmp; vsb_axis_data_array m_vsb_data_array; m_vsb_data_array.data_array.clear(); while (popFromReceivedTpdoQueue(vsb_data_tmp)) { m_vsb_data_array.data_array.push_back(vsb_data_tmp); } (*AxisDataPool::in_vsb_data_array) = m_vsb_data_array; } int main() { // 添加一些测试数据到 received_tpdo_queue 中 for (int i = 0; i < 5; ++i) { vsb_axis_data_t data; data.data_sampling_timestamp_us = i; data.data_received_timestamp_us = i + 10; data.x_axis_data = i + 100; data.z_axis_data = i + 200; received_tpdo_queue.push(data); } // 创建一个 vsb_axis_data_array 对象,并将其指针赋值给 AxisDataPool 的静态成员变量 vsb_axis_data_array vsb_data_array; AxisDataPool::in_vsb_data_array = &vsb_data_array; // 调用 UploadDataToBlackBox() 函数进行测试 VSB::UploadDataToBlackBox(); // 打印存储的数据 for (const auto& data : vsb_data_array.data_array) { std::cout << "data_sampling_timestamp_us: " << data.data_sampling_timestamp_us << std::endl; std::cout << "data_received_timestamp_us: " << data.data_received_timestamp_us << std::endl; std::cout << "x_axis_data: " << data.x_axis_data << std::endl; std::cout << "z_axis_data: " << data.z_axis_data << std::endl; std::cout << std::endl; } return 0; } ``` 此测试程序模拟了 `received_tpdo_queue` 的数据队列,并在其中添加了一些测试数据。然后创建了一个 `vsb_axis_data_array` 对象,并将其指针赋值给 `AxisDataPool` 的静态成员变量 `in_vsb_data_array`。接下来调用 `VSB::UploadDataToBlackBox()` 函数进行测试,并打印存储的数据。运行该程序,您将看到测试数据被存储在 `vsb_data_array.data_array` 中,并打印出来。请注意,为了简化示例,省略了一些实际代码的细节和依赖项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值