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

时间:2015-08-21 19:19:41

标签: c++ arrays class object

我是初学者,在c ++中用oop在编程方面说得很好。我正在尝试创建对象数组并将其传递给成员函数sort(class_name [size])以按其ID号排序。 我已经尽力传递对象数组,但无法找到解决方案。 请帮帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

经典和错误地,数组已通过:

  1. 数组名称
  2. 第一个元素的地址
  3. 最大的问题是阵列的长度(容量)。在C和C ++中,数组(不是std :: array)不存储它的容量。因此接收函数不知道数组的结尾。

    另一个问题是数组中的元素数量。在C和C ++中,数组结构不保持数组中的项数。一个数组可能有32个元素的容量,但只有3个元素。

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

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

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

    因此,为了更安全,您应该在传递数组时使用数组语法,而不是指向第一个元素的指针。为了更好的安全性,使用std::vectorstd::array或将数组放入结构中并传递结构。