私は次のようなものを持っています:
#include<vector>
using namespace std;
vector<char> temp;
vector<char> allbytes = GetBytes();
vector<MyClass> outsidecontainer;
for(int i=0; i<allbytes.size(); i++){
//Populate my buffer
if(something){
temp.push_back(allbytes[i]);
}
//temporary buffer now needs to be used to create MyClass object
//and outside container store this MyClass object
else{
MyClass m(temp);
outsidecontainer.push_back(m);
//Empty the temporary buffer ready for next population
temp.clear();
}
}
class MyClass{
public:
MyClass(vector<char> Message);
private:
vector<char> Message;
};
問題は、最終的に outsidecontainer が空の MyClass オブジェクトを保持することです。つまり、clear() によって temp が空になったということです。ただし、temp は MyClass m にコピーされ、これも outsidecontainer にコピーされるため、これが outsidecontainer の値に影響を与えるとは思いませんでした。オブジェクトへの参照またはポインタを格納していませんか??
temp を使用して MyClass オブジェクトを作成し、次の人口のためにそれをクリアできるように、上記の設計を実装するにはどうすればよいですか?
編集:
MyClass m にはループ スコープがありますが、値が配列にコピーされたため、outsidercontainer に追加されたオブジェクトはループが終了した後も残りますか?
EDIT2:
#include "FIXMessage.h"
FIXMessage::FIXMessage(vector<char> message){
Message = message;
}
FIXMessage::FIXMessage(const FIXMessage& rhs){
}