新手有关问题,VectorPush不进去

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