gpt4 book ai didi

c++ - 使用模板将数组作为引用作为参数传递

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:36 24 4
gpt4 key购买 nike

因为我不知道数组的大小,所以我使用 size 作为参数传递给我的函数。

这个有效:

#include <cstddef>
#include <iostream>

template<class T, size_t N>
void takeArrayParam(T (&myArray)[N]) {
for(auto i = std::begin(myArray); i != std::end(myArray); i++) {
std::cout << *i << std::endl;
}
}

int main() {
int coolArray[10] = {1,2,3,4,5,6,7,8,9,10};
takeArrayParam<int, 10>(coolArray);
return 0;
}

这不起作用(编译器错误):

#include <cstddef>
#include <iostream>

template<class T, size_t N>
void takeArrayParam(T (&myArray)[N]) {
for(auto i = std::begin(myArray); i != std::end(myArray); i++) {
std::cout << *i << std::endl;
}
}

int main() {
size_t size = 10;
int coolArray[size];
//int coolArray[10] = {1,2,3,4,5,6,7,8,9,10};
takeArrayParam<int, size>(coolArray);
return 0;
}

区别:coolArray[10]coolArray[size]

谢谢...

最佳答案

您需要将 const 添加到 main() 中的 size 定义中。
这是因为在堆栈上分配的数组的大小需要在编译时知道。

关于c++ - 使用模板将数组作为引用作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28207265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com