我剛剛編譯了GCC 4.6.0,我想嘗試新的功能,從基於範圍的for循環開始。
我想改變的第一個循環是迭代指針的std :: vector。我改變了代碼以使用新的語法,但沒有編譯。C++ 11基於範圍的指針向量
我試圖替換另一個循環,這是一個std ::向量的結構,它編譯和運行完美。
這裏是一個簡短的測試代碼向你展示我的問題:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> values;
values.push_back(2);
values.push_back(5);
values.push_back(8);
values.push_back(13);
values.push_back(17);
for (int &n : values)
{
std::cout << n << "\n";
}
std::vector< int* > pointers;
pointers.push_back(new int(2));
pointers.push_back(new int(5));
pointers.push_back(new int(8));
pointers.push_back(new int(13));
pointers.push_back(new int(17));
for ((int*) &p : values)
{
std::cout << (*p) << "\n";
}
for(unsigned int i = 0; i < pointers.size(); ++i)
{
delete pointers[i];
}
return 0;
}
當我嘗試編譯(是的,我給-std =的C++ 0x作爲參數傳遞給G ++),它死於此錯誤:
main.cpp|27|error: found ‘:’ in nested-name-specifier, expected ‘::’
如果我將27到30行註釋掉,那沒關係。
我在做什麼錯?不是指針引用聲明的語法正確嗎?
或者是否有基於範圍for循環可以使用的包含類型的限制?
感謝您的幫助!
應該普羅巴bly被轉移到SO – 2011-04-18 19:21:24
@Doug:同意......如果問題包括源代碼,而不是有一個小的URL,它也會有所幫助。 – jprete 2011-04-18 19:23:47