gpt4 book ai didi

c++ - 将 Axis2C 与 Qt 数据结构耦合

转载 作者:行者123 更新时间:2023-11-30 05:23:35 26 4
gpt4 key购买 nike

我们有一个用 C++/Qt 和 Axis2C 编写的基于 SOAP 的客户端-服务器。由于 Axis2C 的 C 特性,它包含许多老式的 C 风格结构(通常它们描述自定义数据的原始数组)。如何在使用 Axis2C 的代码中最小化 C 的使用?支持这些自定义 C 结构很痛苦,因为它需要赋值运算符、c-tors、d-tors 的准确性。基于 Qt 的结构不那么冗长。

最佳答案

我猜您特别关注要使用哪些数据类型,而不是老式的 C(不是 C++)数据类型。这些数据类型是 C++ 标准容器 ( http://www.cplusplus.com/reference/stl/ ),它们随编译器一起提供并且始终可用。这些容器的 Qt 实现也可用 ( http://doc.qt.io/qt-5/containers.html )。

选择哪一个取决于很多因素。下面我展示了一个简化的示例,说明如何使用 STL 执行此操作。所以我认为你必须编写一种包装器,将 c 数据类型转换为 C++/Qt 数据类型。 “std::vector”是一种容器类型,通常可以很好地替代 c 样式数组。

int32_t main ()
{
int arraySize = 10;
int* pCArray = new int [arraySize];

for ( int idx = 0; idx < arraySize; ++idx )
{
pCArray [idx] = idx + 100;
}

for ( int idx = 0; idx < arraySize; ++idx )
{
std::cout << pCArray [idx] << std::endl;
}

std::cout << "-------------------------" << std::endl;

std::vector<int> array;
array.assign ( pCArray, pCArray + arraySize );

delete pCArray;

for ( int idx = 0; idx < arraySize; ++idx )
{
std::cout << array [idx] << std::endl;
}

return 0;
}

在此示例的末尾不需要调用delete array,因为“array”会自动删除(顺便说一句,delete array 甚至无法编译)。

关于c++ - 将 Axis2C 与 Qt 数据结构耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39075911/

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