代码://声明CList:
CList<CItemValue,CItemValue&> * m_pValueList;//CItemValue结构:
class CItemValue  
{
public:
CLongBinary m_lobValue;
CString m_strValue;
CItemValue();
virtual ~CItemValue();
......
};当注释掉CItemValue中m_lobValue的时候,编译正确通过
如果不注释掉,则出现如下提示:
d:\microsoft visual studio\vc98\mfc\include\afxtempl.h(843) : error C2582: 'CItemValue' : 'operator =' function is unavailable
        d:\microsoft visual studio\vc98\mfc\include\afxtempl.h(1566) : while compiling class-template member function 'struct __POSITION *__thiscall CList<class CItemValue,class CItemValue &>::AddTail(class CItemValue &)'
错误发生的代码为afxtempl.h中
POSITION CList<TYPE, ARG_TYPE>::AddTail(ARG_TYPE newElement)
{
ASSERT_VALID(this); CNode* pNewNode = NewNode(m_pNodeTail, NULL);
pNewNode->data = newElement;   ///////这一行错误
if (m_pNodeTail != NULL)
m_pNodeTail->pNext = pNewNode;
else
m_pNodeHead = pNewNode;
m_pNodeTail = pNewNode;
return (POSITION) pNewNode;
}
请问如何解决这个问题。

解决方案 »

  1.   

    你要给你的CItemValue加一个 operator = 的类方法。
      

  2.   

    那在这个方法里面写些什么呢?
    为空可以么?
    为什么没有CLongBinary的时候就不会有这样的问题
      

  3.   

    operator = 是拷贝构造函数。(看C++书吧)CString肯定有拷贝构造函数,应该是m_lobValue也没有拷贝构造函数,
    所以VC无法自动生成一个。你还是把CLIST改为管理CItemValue的指针吧, 这样对你可能简单点。
      

  4.   

    我知了
    CString是有拷贝构造函数的
    我先试着来做这个拷贝构造函数
    多谢
    over
      

  5.   

    Sorry,operator = 赋值函数
    可能不应该叫拷贝构造函数
    虽然它们做的事基本一样