数组类型在函数调用中用作引用类型参数
Array type is used as a reference type argument in the function call
我正在使用PRQA QA C++作为源代码分析器。
这是我分析的第一个代码:
void test1(int * var);
void example1()
{
int var1[10];
test1(var1);
}
QA C++告诉我
数组类型在函数调用中用作指针类型参数。
所以,我尝试了以下示例(如它所建议的那样):
void test2(int (&var)[10]);
void example2()
{
int var2[10];
test2(var2);
}
这一次,它告诉我:
数组类型在函数调用中用作引用类型参数。
有没有更好的解决方案来使用数组参数?
最初的警告很好,第二个警告也是真的。
这是由于数组衰减到指针,所以var1
,最初整数数组可以在需要指针的表达式中使用。
如果您确实要删除这些,有几种选择:
std::array<int, 10> var1;
test1(var1.data());
更好的:
void test2(std::array<int, 10>& var);
void example2()
{
std::array<int, 10> var2;
test2(var2);
}
然后第二个选项修复数组的大小。如果需要它是可变的但在编译时固定,请使用模板,否则使用 std::vector
而不是 C 样式数组。
相关文章:
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 通过引用传递参数时C++类型转换
- 可变参数模板函数参数和引用类型推导
- 通过引用传递参数;函数返回类型是否必须为 VOID?
- 隐式可转换参数,但属于引用类型
- 什么是常量指针常量引用类型的参数?(const X* const & p)
- C++ 引用类型作为递归函数参数
- EXPECT_CALL具有 unique_ptr 引用类型参数的模拟函数
- 为什么模板引用类型不能用作模板类型别名参数?
- 模板默认参数将丢失其引用类型
- 引用模板参数中的模板类型
- 为什么右值引用类型的模板参数可以绑定到左值类型?
- 将类型参数传递给自引用指针
- 如何使用类型特征正确推断引用的参数
- 当将对象传递给具有参数作为引用类型的函数以及当其类对象类型时,会得到不同的输出
- 模板参数是否可以是引用类型?
- 引用模板参数类型上的static_assert
- 数组类型在函数调用中用作引用类型参数
- 如何推断以引用为参数的函数的返回类型
- 初学者引用类型参数混淆