首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

新手有关问题,VectorPush不进去

2012-04-01 
新手问题,VectorPush不进去刚用C++,我定义了一个结构,然后存在Vector中,但是我发现里面存的值不正确。我搞

新手问题,VectorPush不进去
刚用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);
}
构造函数再次调用构造函数,导致重复构造。
不知道说得对不对 :)

热点排行