-1

我有这样的功能

template<typename Arg, typename... Args>
void input(Arg &arg, Args&... args) {

在那里我有一个 if 来检查 arg 是否是一个数组(我以不同的方式处理数组)。然后我尝试访问数组的索引,但我得到了subscripted value is neither array nor pointer. 如果我不混合数组和普通变量,这不会发生。我应该怎么办?

4

1 回答 1

1

只需重载函数以获取常规类型和数组类型,如下所示:

#include <iostream>

template <typename T>
void f(T t)
{
    std::cout<<"Regular version !\n";
}

template <typename T>
void f(T t[])
{
    std::cout<<"Array version !\n";
}

int main() 
{
    f(2); // Prints "Regular version !"
    int k[] = { 1, 2, 3 };
    f(k); // Prints "Array version !"
}

工作示例

于 2013-09-06T06:51:55.057 回答