经过全面搜索并且经常挠头,我仍然无法弄清楚这一点。以前没有使用智能指针,矢量。请帮忙。
我正在尝试制作A类的深层副本,我收到了这个错误。错误指向微软的xutility.cpp的“模板功能复制”,如果这很重要。
classA
{
public:
ClassA (const ClassA& origClassA)
{
ClassA::Copy(origClassA);
}
ClassA & ClassA ::operator=(const ClassA & origClassA )
{
if (this != &origClassA )
{
ClassA ::Clear();
ClassA ::Copy(origClassA );
}
return *this;
}
void ClassA ::Clear()
{
m_nId = 0;
m_pType = nullptr;
}
void ClassA ::Copy(const ClassA & fromClassA )
{
m_nId = fromClassA .m_nId;
if (fromClassA.m_pType)
{
if (!m_pType)
m_pType = std::make_unique<int>();
*m_pType = *fromClassA.m_pType;
}
}
private:
int m_nId;
std::unique_ptr<int> m_pType;
}
Class B
{
public:
ClassB(const ClassB& origClassB)
{
classB::Copy(origClassB);
}
classB& operator=(const classB& fromclassB)
{
if (this != &origClassA )
{
classB::Clear();
classB::Copy(origClassA );
}
return *this;
}
void classB::Clear()
{
m_vectorclassA.Clear();
}
void Copy(const classB& fromclassB)
{
m_vectorclassA = fromclassB.m_vectorclassA;
}
void SetVector(const std::vector<std::unique_ptr<classA>>& vectorclassA )
{
std::vector<std::unique_ptr<classA>>::const_iterator Iterator;
for (Iterator = vectorclassA.begin(); Iterator != vectorClassA.end(); Iterator++)
{
m_vectorclassA.push_back(std::make_unique<classA>(*(*Iterator)));
}
}
private:
std::vector<std::unique_ptr<classA>> m_vectorclassA;
}
答案 0 :(得分:0)
m_vectorclassA = fromclassB.m_vectorclassA
是否由用户Igor Tandetnik指出导致问题的线