新手有关问题,VectorPush不进去
新手问题,VectorPush不进去
刚用C++,我定义了一个结构,然后存在Vector中,但是我发现里面存的值不正确。我搞不懂哪里用错了,请大家指点,本来很简单的问题,就差有人点一下了
输出的结果是:
1111111111
x>
------解决方案--------------------
tagSn(const tagSn& value)
{
tagSn(value.m_Data);
}
构造函数再次调用构造函数,导致重复构造。
不知道说得对不对 :)
刚用C++,我定义了一个结构,然后存在Vector中,但是我发现里面存的值不正确。我搞不懂哪里用错了,请大家指点,本来很简单的问题,就差有人点一下了
- C/C++ code
#include <iostream> #include <vector> using namespace std; typedef struct tagSn { char m_Data[10]; public: tagSn() { memset(m_Data, 0, sizeof(m_Data)); } tagSn(const tagSn& value) { tagSn(value.m_Data); } tagSn& operator=(const tagSn& value) { if (&value != this){ memcpy(m_Data, value.m_Data, sizeof(m_Data)); } return (*this); } tagSn(const void* ptr) { if (ptr != m_Data) memcpy(m_Data, ptr, sizeof(m_Data)); } tagSn& operator=(void* ptr) { if (ptr != m_Data) memcpy(m_Data, ptr, sizeof(m_Data)); return (*this); } bool operator==(const tagSn& value) { return (memcmp(m_Data, value.m_Data, sizeof(m_Data)) == 0); } ; bool operator!=(const tagSn& value) { return (!(*this == value)); } } Sn; typedef vector<Sn> Sn_List; int main() { Sn_List List; string Str; char * ptr_c = NULL; Sn b = "1111111111"; Str.assign(b.m_Data, 10); cout << Str << endl; ///正常输出 List.push_back(b); Sn_List::iterator itor = List.begin(); while (itor < List.end()) { Str.assign((*itor).m_Data, 10); cout << Str << endl;///不是期望的结果 itor++; } return 0; }
输出的结果是:
1111111111
x>
------解决方案--------------------
tagSn(const tagSn& value)
{
tagSn(value.m_Data);
}
构造函数再次调用构造函数,导致重复构造。
不知道说得对不对 :)