Aşağıdaki koduSayı
#include <iostream>
#include <array>
class testClass
{
std::array<int, 2> testArray;
public:
testClass();
void func() const;
};
testClass::testClass() : testArray({{1, 2}})
{
}
void testClass::func() const
{
for (int i = 0; i < 2; ++i)
std::cout << testArray.at(i) << '\n' << testArray[i] << '\n';
}
int main()
{
testClass test;
test.func();
}
ile üye std kontrol :: MinGW (gcc 4.7.0) ile dizi garip davranış sınırlarını alıyorum sadece -O
ile derlenmiş, ben -O
olarak etkin bireysel bayraklarını çalıştı ama başka daraltmak olamazdı ekinler olarak Çıktı,
0
1
0
2
hata optimizasyonu ile ilişkili olduğu görünmektedir olduğunu. Const olmayan işlevi yapmak da sorunu giderir. Bu bir hata olabilir mi yoksa bir şey mi özlüyorum? -std=c++11 -O
Windows XP SP3 ve Windows 7 üzerinde mingw 4.7.0 kullanılarak derlenmiş yukarıdaki gibi düzenlemek
aşağı Daralmış *
, .at()
#include <iostream>
#include <array>
int main()
{
std::array<int, 2> const testArray = {1, 2};
for (int i = 0; i < 2; ++i)
std::cout << testArray.at(i) << '\n' << testArray[i] << '\n';
}
aynı çıktı const
sürümünde bir hata gibi görünen sp1.
* edit 2
aynı çıktı yine
#include <iostream>
#include <array>
int main()
{
typedef std::array<int, 2> Tarray;
Tarray test = {1, 2};
for (int i = 0; i < 2; ++i)
std::cout << const_cast<Tarray const*>(&test)->at(i) << '\n' << test.at(i) << '\n';
}
http://liveworkspace.org/code/b0d5b3c7398f7e1a2e36838f23fc943c iyi çalışıyor düzgün çalıştığını
benim dizinin başlığındaki kodunu değiştirmek. – ForEveR
Kesinlikle bana bir böcek gibi görünüyor. –
Bu benim için [farklı bir çıkış] (http://ideone.com/ZhIsS) üretir ... – dasblinkenlight