On Tue, 29 Jul 2003 [EMAIL PROTECTED] wrote: > Hi all, > > Passing arrays as parameters to a method > ---------------------------------------- > Doing this C++ differs from Java. Usually in C++ we pass the size of the > array in another parameter so that inside the method it know the size of the > array. > > In Java this is not a problem because an Array itself is a class that has the > size. So a method in java, > int EchoIntArray(int []) corresponds to int EchoArray(int [], int) > in C++. > > Suppose some one needs to write a web service for this method and the method > signature that the WSDL describes corresponds to the method signature in Java > exactly but not the C++ one. > > So how should a C++ developer implement his service corresponding to the > WSDL ? > > This way that we (Axis C++) asks the C++ web service developer should be > decided in order to improve Wrapper Class Generator (WCG) to handle passing > and returning arrays from methods. > > I find that we can give 2 solutions, > > 1. Introduce Axis C++ own Array class. So the method signature becomes > int EchoIntArray(AxisArray a) > > 2. Ask the C++ developer to specify the meaning of other parameters by using > a predefined Axis C++ macro. Then the method signature becomes, > int EchoIntArray(int [], ARRAYINSIZE int); > > Which is the best option to choose. IMO I like second. > > Also if you find any other solution please discuss. > > Comments on this is very much appreciated.
I suggest 1, or use std::array, simply because number 2 seems error-prone. Also, if you encapsulate the array in an object, you can add range checking. You can #ifdef-out the range-checking in the release build. Whether to write your own or use std::array depends on a lot of factors.
