0

私は次の設定をしています:

次のような静的メンバーを持つクラス:
static std::vector<int> m_Some[3];

問題は、私はそれでカントm_Some[0].push_back(x)です。
でエラーが発生し<vector>insert()次に でエラーが発生しますoperator-
しかし、どういうわけかコールスタックがそれ以降のアクションに対して間違っているため、実際に何が起こっているのかわかりません。

m_Some[0].reserve(1); push_backやれば1
は作れますpush_backが、2つ目は失敗push_back

push_backなぜそれができず、最初にしなければならないのか、まったくわかりませんreserve...そして、私はサイズ I よりも
カントできません。push_backreserve

同じタイプの配列でローカル変数を試しましたが、 push_back.

私はVS2008を使用してコンパイルしています。

誰でも理由を知っていますか?ありがとう!

4

1 に答える 1

1

Are you calling push_back from a constructor of another static? In which case your vectors might not be constructed yet? Probably not, but there isn't much to go on in the question. – J99 44 mins ago

Maybe he's experiencing a static initialization order fiasco. – akappa 43 mins ago

@J99, yes I am calling it within a constructor of a global variable...! (declared in an .cpp) (but not static). I think that's the problem, I'll try to modify the code and see the result! – Marson Mao 33 mins ago

@J99 and akappa: Exactly the problem is, the vector initialzation is after my calling in the constructor...I'll try to solve that problem then. Thanks!! (How to mark the comment as the answer?!) – Marson Mao 27 mins ago

@MarsonMao You cannot. Just answer your own question and mark it as accepted – akappa 8 mins ago

Above are the answers! Thanks for the help :)

于 2012-11-01T11:17:39.730 に答える