-1

私はこのような機能を持っています

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

そこには、arg が配列であるかどうかをチェックする if があります (配列の扱いが異なります)。次に、配列のインデックスにアクセスしようとしましたが、subscripted value is neither array nor pointer. 配列と通常の変数を混在させなければ、これは起こりません。私は何をすべきか?

4

1 に答える 1

1

Simply overload the function to take a regular type and an array type, like so:

#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 !"
}

Working example

于 2013-09-06T06:51:55.057 に答える