C++;将 std::array 作为函数参数传递
C++; Pass std::array as a Function Parameter
我知道这是一个常见问题,但我如何将 std::array
作为函数参数传递?我在这里查看了其他问题的答案,询问同样的事情,我发现最好的“解决方案”是使用模板将 size_t
设置为 SIZE
这样的关键字。我试过了,但它仍然给我两个编译时错误:
Error C2065 'SIZE': undeclared identifier
Error C2975 '_Size': invalid template argument for 'std::array', expected compile-time constant expression
两个错误都在我的 void
函数定义所在的行。
据我所知,我完全按照解决方案的输入方式进行了此操作。我知道我可以通过 std::vector
,但我很固执,想学习这个。
这是我的相关代码:
#include <iostream>
#include <array>
using namespace std;
template<size_t SIZE>
void QuickSort(array<unsigned, SIZE>& arrayName);
int main()
{
// main function.
}
void QuickSort(array<unsigned, SIZE>& arrayName)
{
// whatever the function does.
}
如果能帮助我找出我做错了什么,我将不胜感激。
EDIT: 我忘记把第二个函数参数拿出来了。我这样做了,但仍然是同样的问题。
您的函数定义仍然需要模板参数,因为编译器无法知道 SIZE
是什么
template<size_t SIZE>
// ^^^^^^^^^^^^^^^^^^
void QuickSort(array<unsigned, SIZE>& arrayName)
{
/// whatever the function does.
}
我知道这是一个常见问题,但我如何将 std::array
作为函数参数传递?我在这里查看了其他问题的答案,询问同样的事情,我发现最好的“解决方案”是使用模板将 size_t
设置为 SIZE
这样的关键字。我试过了,但它仍然给我两个编译时错误:
Error C2065 'SIZE': undeclared identifier
Error C2975 '_Size': invalid template argument for 'std::array', expected compile-time constant expression
两个错误都在我的 void
函数定义所在的行。
据我所知,我完全按照解决方案的输入方式进行了此操作。我知道我可以通过 std::vector
,但我很固执,想学习这个。
这是我的相关代码:
#include <iostream>
#include <array>
using namespace std;
template<size_t SIZE>
void QuickSort(array<unsigned, SIZE>& arrayName);
int main()
{
// main function.
}
void QuickSort(array<unsigned, SIZE>& arrayName)
{
// whatever the function does.
}
如果能帮助我找出我做错了什么,我将不胜感激。
EDIT: 我忘记把第二个函数参数拿出来了。我这样做了,但仍然是同样的问题。
您的函数定义仍然需要模板参数,因为编译器无法知道 SIZE
是什么
template<size_t SIZE>
// ^^^^^^^^^^^^^^^^^^
void QuickSort(array<unsigned, SIZE>& arrayName)
{
/// whatever the function does.
}