【问题标题】:C++: How to pass array of objects into function?C++:如何将对象数组传递给函数?
【发布时间】:2013-07-11 21:53:04
【问题描述】:

我有一个指向对象数组的指针。它看起来像:

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

如何通过引用将“myClass”传递给函数?我尝试了几个案例,但没有成功。

【问题讨论】:

  • 这是一个指针数组。你应该更喜欢std::array<MyClass, 10>,尤其是在将它传递给函数时。
  • 这是我的错。我的意思是 myClass 而不是 obj。

标签: c++ pointers reference


【解决方案1】:

如果你真的必须使用数组,那么

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”。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2018-08-04
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多