グローバルクラスインスタンスの値を変更します。は、私は、このクラス定義有する
class event {
public:
wstring type;
int pos;
int sen;
event(const string &t) : type(util::string2wstring(t)) {}
~event() {};
を}。
とグローバル変数:
list<event> events;
この変数は、1つの関数に初期化し、その後、私はのように、このイベントの貴様値を変更したい:最初のcoutの印刷後
for(auto ei : events) {
ei.pos = (*w).get_position();
ei.sen = sen;
cout << "pos: " << ei.pos << " in sentence " << ei.sen << endl;
++w;
++sen;
}
event ei = events.front();
cout << "pos2: " << ei.pos << " in sentence2 " << ei.sen << endl;
新しいposとsenの値は正しいが、スコープの外側の2番目の値は最も古い値を出力する。
他の機能で値を印刷すると、最も古い値が印刷されます。
問題はグローバル変数への参照アクセスではないと思いますが、それは本当ですか?
そして最も重要なのは、どのように修正できますか?
ありがとうございます。
よろしくお願いいたします。
、このような問題を解決するための適切なツールは、あなたのデバッガです:あなたはそれを指定する必要がリファレンスを使用するには
。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
それは真実ではありません。私は私のプログラムをデバッグし、私は参照のないアクセスの問題を発見します。私の問題を見るための答えを見てください。 :) –
[MCVE]に行く。 –