写某个程序时有如下一段
struct goods{
CString m_NO;
int nSstyle;
float fNumber;
float fPrice;
float fTotal;
};
struct User{
CString m_Name;
CString m_Tel;
CList <goods ,goods> goodsList;
};
这里编译不通过,即使把goods改成存在的数据类型如INT,都是有错的
错误提示说: error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(553) : 参见“CObject::CObject”的声明
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(524) : 参见“CObject”的声明

d:\program files\microsoft visual studio 8\vc\atlmfc\include\afxtempl.h(781) : error C2248: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)
请问是不是不可以把CLIST放在结构体里定义?

解决方案 »

  1.   

    可能是CString m_NO;引起的
    换成 TCHAR m_NO[20];之类的试试。
      

  2.   

    你这里并没有CObject继承类。所以问题可能不在这里。另外,最好用引用或者指针来作为CList的成员类型。
      

  3.   

    TO 5楼,不是什么项目,作业而已.
    放在某个DLG的头文件里
    #pragma once
    #include "afxcmn.h"
    // MainDLG 对话框class MainDLG : public CDialog
    {
    DECLARE_DYNAMIC(MainDLG)
    public:

    struct goods{ 
    CString m_NO; 
    int nSstyle; 
    float fNumber; 
    float fPrice; 
    float fTotal; 
    }; 
    struct User{ 
    CString m_Name; 
    CString m_Tel; 
    CList <goods ,goods> goodsList; 
    };
    CList <User,User> userList;
    public:
    MainDLG(CWnd* pParent = NULL);   // 标准构造函数
    virtual ~MainDLG();

    // 对话框数据
    enum { IDD = IDD_DIALOG1 };
    ..........
      

  4.   

    一个用户的货物数量是不定的,所以用大数组浪费,又对STL容器不熟,以为CLIST好用..就试下
      

  5.   

    貌似Clist不能加到struct里面,CList是MFC的。不过你可以把
    struct放到Clist里面
      

  6.   

    现在问题解决
    struct goods{ 
    CString m_NO; 
    int nSstyle; 
    float fNumber; 
    float fPrice; 
    float fTotal; 
    }; 
    struct User{ 
    CString m_Name; 
    CString m_Tel; 
    CList <goods ,goods> goodsList; 
    }; 
    CList <User,User> userList; 
    这段中User结构中包含了一个CList
    而UserList又以为User类为摸版.即CList中不能 包含CList
    不知道是否是这样?
      

  7.   

    可以用CList<User*, User*> userList的形式