gpt4 book ai didi

c++ - 错误 : expected primary-expression before ‘,’

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:05 24 4
gpt4 key购买 nike

我是 C++ 新手。我想确定 C++ 中字符串数组的大小。根据本论坛的建议,我创建了一个模板来确定数组的大小。相关代码为

virtual std::string _verify_list_or_string(std::string obj[]) {     
std::cout << "debug " << sizeof_array(std::string, sizeof(obj)) << std::endl;

我使用的模板是

template <typename T, std::size_t N>
std::size_t sizeof_array( T (&)[N] ) {
return N;
}

我收到一个编译错误:“错误:‘,’之前需要主表达式”

我做错了什么?

最佳答案

问题是,尽管有 [],函数参数是一个指针而不是数组。您只能通过引用将数组传递给函数,然后它必须是对特定大小数组的引用 - 大小是数组类型的一部分。

如果您需要作为指针传递的数组的大小,那么一些选项是:

  • 使函数本身成为一个模板,例如您的 sizeof_array,以便通过引用传递数组,并将大小用作模板参数;
  • 使该函数成为一个在两个参数中采用迭代器范围的模板,因此它可以用于任何类型的序列(包括数组);
  • 将数组的大小作为第二个参数传递;
  • 传递一个类类型,如 std::arraystd::vector 以及一个可以给你大小的接口(interface)。

该错误是因为您将废话传递给 sizeof_array。如果 obj 是一个数组,那么您将执行 sizeof_array(obj),并且将从 obj 的类型推断出模板参数。但它不是一个数组,所以这也行不通。

关于c++ - 错误 : expected primary-expression before ‘,’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054985/

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