集合类 CList的使用
今天,在项目中,需要使用集合类,考虑到使用简单、方便,所以选择了CList。可没想到在使用的过程中却出现了学多问题。
1.无法实现集合类的复制,需要重载类的=运算符;错误提示为无法从FunListNode 转换到FunListNode;
2.没有可用的复制构着函数;
3.没有默认的可用的构着函数
4.注释中1 2 3都是必须的
typedef CList<CString, CString> CStrList; //CTypedPtrList
class FunListNode : public CObject
{
//DECLARE_SERIAL(FunListNode)
public:
FunListNode(){} // 1
public:
CString strFunName; // 函数名
CStrList *listCalledFunName; // 在这个函数中被调用的其他函数名列表
FunListNode& operator = (FunListNode& data) // 2
{
//防止自身赋值
if(&data == this)
{
return *this;
}
strFunName = data.strFunName;
listCalledFunName = data.listCalledFunName;
return *this;
}
FunListNode(const FunListNode &data) //3
{
strFunName = data.strFunName;
listCalledFunName = data.listCalledFunName;
}
//virtual void Serialize(CArchive& ar);
};
CList<FunListNode , FunListNode &> m_lstFunList;