在c++中传递对象数组给成员函数

passing array of object to member function in c++

本文关键字:数组 成员 函数 对象 c++      更新时间:2023-10-16

我是c++编程的oop初学者。我试图使对象的数组,并将其传递给成员函数排序(class_name[size])排序由他们的id号。我已经努力传递对象数组,但找不到解决方案。请帮帮忙。

通常情况下,数组是通过:

传递的。
  1. 数组名称
  2. 第一个元素地址

最大的问题是数组的长度(容量)。在C和c++中,数组(不是std::array)不存储它的容量。所以接收函数对数组的结尾没有任何线索。

另一个问题是数组中元素的数量。在C和c++中,数组结构不维护数组中的项数。一个数组可能有32个元素的容量,但只加载了3个元素。

如果您编写自己的函数并使用数组,请提供数组的参数,数组中的元素的容量和数量。

编辑1:
传递指针或第一个元素的地址的一个问题是,指针只指向单个字符,从技术上讲,不是数组对象。假设数组是一个容器,其中元素是连续的,中间没有其他数据类型。因此,您只需要知道数组的第一个位置。

问题是我可以传递一个指向单个字符的指针,而接收函数会将数据视为字符数组而不是单个字符。从而产生未定义的行为,通常称为缓冲区溢出。

因此,为了更加类型安全,在传递数组而不是指向第一个元素的指针时应该使用数组语法。为了提高安全性,可以使用std::vectorstd::array,或者将数组放在一个结构体中并传递该结构体。