이상한 문제가 있습니다. 객체를 푸시 (push)하고자하는 벡터가 있습니다.벡터에 push_back
vector<DEMData>* dems = new vector<DEMData>();
DEMData* demData = new DEMData();
// Build DEMDATA
dems->push_back(*demData);
벡터에 몇 백 개의 DEMData 객체가 있습니다. 문제는이 코드가 끝나고 모든 항목이 마지막 항목이 벡터에 "푸시 백"된 것과 같은지 여부입니다.
다른 개체가 벡터에서 대체되는 이유는 무엇입니까?
편집 :
이class DEMData
{
private:
int bitFldPos;
int bytFldPos;
const char* byteOrder;
const char* desS;
const char* engUnit;
const char* oTag;
const char* valType;
int index;
public:
void SetIndex(int index);
int GetIndex() const;
void SetValType(const char* valType);
const char* GetValType() const;
void SetOTag(const char* oTag);
const char* GetOTag() const;
void SetEngUnit(const char* engUnit);
const char* GetEngUnit() const;
void SetDesS(const char* desS);
const char* GetDesS() const;
void SetByteOrder(const char* byteOrder);
const char* GetByteOrder() const;
void SetBytFldPos(int bytFldPos);
int GetBytFldPos() const;
void SetBitFldPos(int bitFldPos);
int GetBitFldPos() const;
friend std::ostream &operator<<(std::ostream &stream, DEMData d);
};
편집 :
내가 XML 파일과 건물 DEMData 객체를 읽고있다 기반
DemData 클래스는 세터와 게터 간단한, 단지 데이터 구조입니다 각 xml 요소의 속성 :
DEMData demData;
for (i = 0; attr[i]; i += 2)
{
if(strcmp(attr[i],"BitFldPos") == 0)
{
demData.SetBitFldPos(*attr[i + 1] - '0');
}
else if(strcmp(attr[i],"BytFldPos") == 0)
{
char* pEnd;
int tmp = strtol(attr[i + 1],&pEnd,10);
demData.SetBytFldPos(tmp);
}
else if(strcmp(attr[i],"ByteOrder") == 0)
{
demData.SetByteOrder(attr[i + 1]);
}
else if(strcmp(attr[i],"DesS") == 0)
{
demData.SetDesS(attr[i + 1]);
}
else if(strcmp(attr[i],"EngUnit") == 0)
{
demData.SetEngUnit(attr[i + 1]);
}
else if(strcmp(attr[i],"OTag") == 0)
{
demData.SetOTag(attr[i + 1]);
}
else if(strcmp(attr[i],"ValTyp") == 0)
{
demData.SetValType(attr[i + 1]);
}
else if(strcmp(attr[i],"idx") == 0)
{
char* pEnd;
int tmp = strtol(attr[i + 1],&pEnd,10);
demData.SetIndex(tmp);
}
//printf(" %s='%s'", attr[i], attr[i + 1]);
}
// Insert the data in the vector.
dems.push_back(demData);
더 많은 문맥을 사용할 수 있습니까? 예를 들어 함수에 있나요? 또한 동적 메모리 할당을 사용하는 이유는 무엇입니까? – GManNickG
많은 코드가 없지만 여기에 메모리 누수가있을 수 있습니다. push_back은 객체의 복사본을 만듭니다. –
동적 메모리 할당을 사용하지 않겠습니까? – Blade3