C++:通过引用将结构数组传递给函数
C++: Passing array of structs to functions by reference
请不要标记为重复,虽然有与我类似的问题,但它们要么使用指针回答,没有解决与我相同的问题,要么它们与语言 C 而不是C++有关。
我正在尝试将结构数组传递给函数,但是当我尝试这样做时,我收到一个错误:declaration of ‘a’ as array of references
。我认为问题可能在于编译器将其作为数组而不是结构体读取,但我不确定如何解决这个问题。
我定义了三个元素的结构:
struct StructA {
string name;
float income;
int amount;
}
在 main 中声明了此结构:
StructA a[15];
我把它传递给一个函数,如下所示:
void FunctionA(StructA& a[], int& count) { //& to pass by reference
}
此外,在 StructA 的定义下方,我有上面函数的匹配函数原型。
我做错了什么?
编辑:有人将这个问题标记为另一个问题的副本; 事实并非如此。我正在上编程课的入门,正如我在上面明确指出的那样,我不能使用指针。猜猜另一个问题用什么?一个指针。看到区别了吗?此外,在更实际的层面上,我已经尝试了将对象的动态数组传递给函数中推荐的解决方案,但它对我不起作用,因为我无法在另一个问题中发表评论,所以我必须问一个新问题。我会等到我能问我的教授,格拉齐。
要通过引用传递任何大小的数组,您可以执行以下操作:
template <size_t Size>
void FunctionA(StructA (&a)[Size])
它将推断数组的大小,因此您不需要每次都指定它。
StructA a1[10];
StructA a2[15];
FunctionA(a1);
FunctionA(a2);
使用以下语法:
void FunctionA(StructA (&a) [SIZE], int &count)
在这种情况下,应该提到SIZE
。
你的语法(void FunctionA(StructA &a [SIZE])
)意味着你传递引用数组(&)而不是对数组的引用。
您还可以将模板与以下函数一起使用:
template <size_t Size>
void FunctionA(StructA (&a) [SIZE])
如果您的意思是count
数组size
,则无需传递,如:Amadeus
使用模板将启用不同尺寸的功能,回答者: 詹姆斯·鲁特
然后,您可以按如下方式使用该函数:
StructA a[10];
StructA b[20];
FunctionA(a);
FunctionA(b);
相关文章:
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 打印 2D 动态数组 c++ 函数
- C++数组函数
- 在数组函数指针中调用void
- 数组函数似乎没有找到最大值
- 使用数组函数和循环求解伪元编码|C
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 数组函数错误输出
- 读取文件,然后创建数组函数C++
- 指针数组函数参数-奇怪的行为
- 二维数组 - 函数
- "return"没有从数组函数返回正确的值
- 数组函数问题
- 数组函数的大小返回 int 的大小而不是数组
- 从数组函数中删除元素
- 如何从C++中最好地调用具有C99风格数组函数签名的函数
- 追加/打印/插入数组c++函数问题
- 如何将数组函数转换为指针函数
- 多维数组函数输出垃圾
- C++:数组函数的递归最大值