我试着编写一个函数来对数组中的项进行求和:
template <class T, size_t N>
T sumItems(T (&arrayOfInt)[N]) {
int sum = 0;
for (int i = 0; i < N; i++) {
sum += arrayOfInt[i];
}
return sum;
}
我称之为:
int main(int argc, const char * argv[]) {
cout << "Plese enter the number of elements: ";
int numOfElements;
cin >> numOfElements;
int arrayOfInts[numOfElements];
for (int i = 0; i < numOfElements; i++) {
cin >> arrayOfInts[i];
}
int sum = sumItems(arrayOfInts);
cout << sum << endl;
return 0;
}
编译器告诉我&#34;没有匹配函数来调用&#39; sumItems&#39;&#34;。 但是,如果我改变
int arrayOfInts[numOfElements];
到
int arrayOfInts[5];
代码可以正常运行。
我知道应该有一些更好的解决方案(比如使用vector而不是数组)。但是我想知道它为什么会有这种行为以及如何避免这种行为。
提前致谢!