2013-07-11 2 views
0

J'ai un pointeur sur le tableau d'objets. Il ressemble à:C++: Comment passer un tableau d'objets en fonction?

MyClass *myClass[ 10 ]; 
myClass[ 0 ] = new MyClass(); // init for each of myClass[0..9] 
myClass[ 0 ]->field1 = "hello"; 

Comment puis-je transmettre "myClass" à une fonction par référence? J'ai essayé quelques cas mais cela n'a pas fonctionné.

+7

C'est un tableau de pointeurs. Vous devriez préférer 'std :: array ' en particulier quand vous le passez dans une fonction. – chris

+5

Qu'est-ce que "obj" ??? – juanchopanza

+0

c'est de ma faute. Je voulais dire myClass au lieu d'obj. – JavaRunner

Répondre

5

Si vous devez vraiment utiliser un tableau, puis

template<size_t N > 
void foo(MyClass (&arr)[N]) 
{ 
    // Access arr[i], size is N 
} 

... 

foo(myClass); 

Sinon, utilisez un std::array

template<size_t N > 
void foo(std::array<MyClass,N>& arr) 
{ 
    // Access arr[i], size is N or arr.size() 
} 

... 

std::array<MyClass, 10> myClass = ....; 
foo(myClass); 

Je ne dirais pas un tableau "myClass" cependant.

Questions connexes