前提・実現したいこと
キューを用いてクラスを管理したいです
発生している問題
以下のプログラムでキューを用いてクラスを管理しているのですが、自分の予想だとbool型のメンバ変数は一度operatorでtrueが代入されchangeが出力され、その後はfalseに代入している箇所がないのでずっとgoodが表示されるということがキューの要素それぞれで起こると思うのですがそうはなりませんでした。
実行結果を見てみると全ての出力がchangeになっていました。
どうすれば2回目以降の出力をgoodにすることができるでしょうか?
該当のソースコード
#include<iostream> #include<queue> using namespace std; class A{ public: A(int _k){ k = _k; t = false; std::cout << "------" << std::endl; } void operator()(){ if(t == false){ t = true; std::cout << "change" << std::endl; }else{ std::cout << "good" << std::endl; } } int get(){ if(t == true){ return k; }else{ return 0; } } private: int k; bool t; }; int main(){ queue<A> targetQueue; for(int i = 0; i < 3; ++i){ A a(i); targetQueue.push(a); } for(int j = 0; j < 3; ++j){ for(int i = 0; i < 3; ++i){ A x = targetQueue.front(); x(); cout << x.get() << endl; } targetQueue.pop(); } }
実行結果
change
0
change
0
change
0
change
1
change
1
change
1
change
2
change
2
change
2
###理想の実行結果
change
0
good
0
good
0
change
1
good
1
good
1
change
2
good
2
good
2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/24 07:04