何らかの理由で、私のプログラムで "unsigned int"の代わりに "uint"として変数を定義すると、エラーになります。typedefされたuintを使用するとエラーが発生しますが、 "unsigned int"はエラーになります...?
typedef unsigned int uint;
ので、私は、交換可能に2を使用することができることを思うだろう...:UINTは次のようにtypedefされているので、これは、奇妙に思えます。より正確に言えば、 "unsigned int"を返す関数の結果をuint変数に代入すると、 ベクトルサイズ変更呼び出しでそのuintを使用しています...その時点ではエラーとなります。つまり、コードは次のようになります。
unsigned int getUInt()
{
return 3;
}
int main(void) {
vector<vector<float> > vectVect(100000);
for(uint i = 0; i < vectVect.size(); ++i)
{
vector<float>& myVect = vectVect[i];
uint myUnsignedInt = getUInt();
myVect.resize(myUnsignedInt);
}
cout << "finished" << endl;
}
...そして、その行のエラーはmyVect.resize行です。
明らかに、私はすでに解決策を持っていますが、私はかなり困惑しているので、これがなぜ起こっているのかを理解したいと思います。誰でもアイデアはありますか?
PS - 誰かが問題と思われる場合は、fedora 15でgcc v4.1.2を使用しています...そして、uintを定義するインクルードファイルは/usr/include/sys/types.hです。
エラーが発生した場合は、常に問題の質問に質問を含める必要があります。 –
実際のコードは失敗しているはずです。特に '#include'、' using'宣言などです.GCC 4.6は、おそらく4.1よりもはるかに標準に準拠しています。 –
[ここからわかるように](http://ideone.com/Y1DRP)、提供された例でエラーは発生しません(少なくともgccのバージョンでは)。 –