2013-07-11 7 views
0

У меня есть указатель на массив объектов. Он выглядит так:C++: Как передать массив объектов в функцию?

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

Как передать «myClass» функции по ссылке? Я попробовал несколько случаев, но это не сработало.

+7

Это массив указателей. Вы должны предпочесть 'std :: array ' особенно при передаче его в функцию. – chris

+5

Что такое «obj» ??? – juanchopanza

+0

это моя вина. Я имел в виду myClass вместо obj. – JavaRunner

ответ

5

Если вы действительно должны использовать массив, а затем

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

... 

foo(myClass); 

В противном случае, используйте 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); 

Я бы не назвал массив "MyClass", хотя.

Смежные вопросы