我是初学者,在c ++中用oop在编程方面说得很好。我正在尝试创建对象数组并将其传递给成员函数sort(class_name [size])以按其ID号排序。 我已经尽力传递对象数组,但无法找到解决方案。 请帮帮忙。
提前致谢。
答案 0 :(得分:1)
经典和错误地,数组已通过:
最大的问题是阵列的长度(容量)。在C和C ++中,数组(不是std :: array)不存储它的容量。因此接收函数不知道数组的结尾。
另一个问题是数组中的元素数量。在C和C ++中,数组结构不保持数组中的项数。一个数组可能有32个元素的容量,但只有3个元素。
如果编写自己的函数并使用数组,请提供数组的参数,容量和数组中元素的数量。
编辑1:
传递指针或第一个元素的地址的一个问题是指针只指向单个字符,技术上不是数组对象。假设数组是一个容器,其中元素是连续的,其间没有其他数据类型。因此,您只需要知道数组的第一个位置。
问题是我可以将指针传递给单个字符,接收函数会将数据视为字符数组而不是单个字符。因此,创建通常称为缓冲区溢出的未定义行为。
因此,为了更安全,您应该在传递数组时使用数组语法,而不是指向第一个元素的指针。为了更好的安全性,使用std::vector
或std::array
或将数组放入结构中并传递结构。