如果我像这样声明一个数组(使用 C++ 类模板),
#include <array> //standard c++ library
int main()
{
array<int,3> myarray{10,20,30};
}
我怎样才能将这个数组对象作为参数发送给函数。
如果我这样通过,它会起作用:
void f_print(array<int, 3> object){}
int main()
{
array<int, 3> myarray{10,20,30};
f_print(myarray);
}
但这里的问题是我在函数中对大小进行硬编码。像这样使用数组作为对象类型的全部意义在于我可以使用 array.size()。 那么如何在不对大小进行硬编码的情况下传递此数组类型对象(C++ 类模板)。
Edit_1:为什么我不能将数组对象仅作为一个对象发送,我在函数参数中使用该对象的所有属性。
最佳答案
您可以模板化数组类型
template<typename T>
void f_print(std::array<T, 3> const& object);
或者大小
template<size_t S>
void f_print(std::array<int, S> const& object);
或两者兼而有之:
template<typename T, size_t S>
void f_print(std::array<T, S> const& object);
编译器应该能够在所有情况下推断出正确的模板参数。
关于c++ - 如何将数组对象(Class Template c++)作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491112/