We have a SOAP-based client-server written in C++/Qt and Axis2C. It contains a lot of old-fashioned C-style structs (usually they describe raw arrays of custom data), because of the C nature of Axis2C. How can C usage be minimized in the code, which uses Axis2C? It's a pain to support these custom C structs, because it requires accuracy of assignment operators, c-tors,d-tors. Qt-based structs are less verbose.
1 Answers
I guess you are especially looking which datatypes to use instead of old fashioned C (not C++) datatypes. These datatypes are the C++ standard containers (http://www.cplusplus.com/reference/stl/) which are shipped with your compiler and are alway available. A Qt implementation of these containers is available, too (http://doc.qt.io/qt-5/containers.html).
Which one to choose depends of a lot of factors. Below I showed a simplified sample how to do this with the stl. So I think you will have to write a kind of wrapper which converts the c datatypes to C++/Qt datatypes. "std::vector" is one type of containers which is often a good replacement for c style arrays.
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;
}
There is not need to call delete array
at the end of this sample since "array" is deleted automatically (BTW delete array
would not even compile).

- 1,798
- 3
- 22
- 32
-
I mean Qt-based structs serialization for Axis2C – ilya Aug 23 '16 at 11:27
-
Are you looking for s.th. like this: http://stackoverflow.com/questions/2570679/serialization-with-qt ? – Semjon Mössinger Aug 23 '16 at 13:36
-
Thanks, for the hyperlink. – ilya Aug 26 '16 at 10:23