首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Axis2C与Qt数据结构相结合

将Axis2C与Qt数据结构相结合
EN

Stack Overflow用户
提问于 2016-08-22 17:30:42
回答 1查看 47关注 0票数 1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-22 18:45:07

我猜您特别关注使用哪种数据类型,而不是使用老式的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样式数组的一个很好的替代品。

代码语言:javascript
复制
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;
}

由于“数组”会被自动删除(BTW delete array甚至不会编译),因此不需要在此示例的末尾调用数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39075911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档