BaseArray access problem [SOLVED]



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

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

    ---------
    Hi
    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;
    	MyVectorArray.Resize(10);
    	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) 
    { 
           GePrint(RealToString(inputVectorArray[5].y));
    }
      
      
    
    


  • 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)  
    { 
           GePrint(RealToString(inputVectorArray[5].y));
    }
    

    -Niklas



  • 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)  
    { 
           GePrint(RealToString(inputVectorArray[5].y));
    }
      
    


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

    That's a good tip, thanks Remo!


Log in to reply