我有类似的东西:
#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 中,而 MyClass m 也被复制到了外部容器中。他们不存储对象的引用或指针??
如何实现上述设计,能够使用 temp 创建 MyClass 对象并为下一个人口清除它?
编辑:
即使 MyClass m 具有循环范围,添加到 outsidercontainer 的对象是否会在循环完成后保留,因为值已复制到数组中?
编辑2:
#include "FIXMessage.h"
FIXMessage::FIXMessage(vector<char> message){
Message = message;
}
FIXMessage::FIXMessage(const FIXMessage& rhs){
}