BaseArray access problem [SOLVED]

  • On 06/07/2014 at 22:19, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   14 
    Platform:   Windows  ;   
    Language(s) :

    I am creating a BaseArray: 
    c4d_misc::BaseArray<Vector> MyVectorArray

    If I try to pass it to a function, the compiler throws an error: 
    'c4d_misc::BaseArray<T>::BaseArray' : cannot access private member declared in class 'c4d_misc::BaseArray<T>'

    I can pass a GeDynamicArray to a function without problems, but I would like to use BaseArray for its speed.

    So basically, how do I pass a BaseArray to a function.

  • On 08/07/2014 at 12:57, xxxxxxxx wrote:

    No hint on passing a BaseArray to a function?

    	c4d_misc::BaseArray<Vector> MyVectorArray;
    	for (int i=0; i<10; i++) MyVectorArray[i] = Vector(0,i,0);
    	GePrint(RealToString(MyVectorArray[5].y));   			         //5  This works!!!
    	printVectorBaseArray(MyVectorArray);			            	//DOES NOT WORK....BaseArray is Inaccessible!!!
    void printVectorBaseArray(c4d_misc::BaseArray<Vector> inputVectorArray) 

  • On 08/07/2014 at 13:51, xxxxxxxx wrote:

    It protects you from passing the array by value, which is what you are doing. The function call
    would require to copy the whole array. Pass it as a pointer or reference (usually preferred).

    void printVectorBaseArray(c4d_misc::BaseArray<Vector> **&** inputVectorArray)  


  • On 08/07/2014 at 15:18, xxxxxxxx wrote:

    It works. Thanks Niklas!

  • On 09/07/2014 at 08:19, xxxxxxxx wrote:

    But please do not forget about  const  if the array do NOT need to be modified inside function.

    void printVectorBaseArray( **const** c4d_misc::BaseArray<Vector> **&** inputVectorArray)  

  • On 09/07/2014 at 11:18, xxxxxxxx wrote:

    That's a good tip, thanks Remo!

Log in to reply