我是C++編程的初學者。我試着編寫一個非常簡單的程序,它結合了模板的使用,將數組作爲參數傳遞給一個函數和一個基於範圍的for循環。這是我使用Eclipse Luna CDT軟件編寫和編譯的程序。使用基於範圍的循環的錯誤 - Eclipse CDT Luna
#include <iostream>
using namespace std;
template <typename T>
void display (T myArray[])
{
int i = 1;
for (T c : myArray)
{
cout << i << " element is " << c << endl;
++i;
}
}
int main()
{
int numArray[] {1, 2, 3};
char charArray[] {'a', 'b', 'c'};
display<int>(numArray);
display<char>(charArray);
return 0;
}
但是,當我保存此文件並構建它時,它說第8行有錯誤,突出顯示了基於範圍的for循環。編譯器特別聲明「'開始'和'結束'未在此範圍內聲明」。編譯器是mingw-w64並且已經爲C++ 11設置。我如何解決這個錯誤?
謝謝你的回答。
當我將修改添加到程序中時,它可以很好地工作。你能告訴我爲什麼一個C風格的陣列不起作用嗎?是否因爲它與C++ 11添加不兼容?非常感謝。 –
@RamSidharthNair基於循環的範圍使用「開始」和「結束」迭代器。 C風格的數組沒有它們,所以你需要使用一個容器,例如std :: array,std :: vector等 – December
現在我完全理解了。非常感謝。 –