none
Coleccion CList dentro de una clase RRS feed

  • Pregunta

  • Hola.

    Estoy trantando de incluir una coleccion CList dentro de otra pero al compilar me da error.

    El codigo que tengo es el siguiente:

    class

     

    CAccion
    {

    public

     

    :

     

    int nTipo;

    CString m_sAuxItem;

    };

    class

     

    CPerfiles

    {

    public

     

    :

    CString m_sNombre;

    CString m_sDescripcion;

    BOOL m_bEstado;

    CString m_sRuta;

    CList<CAccion, CAccion> m_ListaAcciones;

    };

    // Cuadro de diálogo de CViCaDlg

    class

     

    CViCaDlg : public CDialog

    {

    // Construcción

    public

     

    :

    CViCaDlg(CWnd* pParent = NULL);

    // Constructor estándar

    // Datos del cuadro de diálogo

     

    enum { IDD = IDD_VICA_DIALOG };

     

    protected:

     

    virtual void DoDataExchange(CDataExchange* pDX); // Compatibilidad con DDX/DDV

     

    // Implementación

    protected

     

    :

    HICON m_hIcon;

     

    // Funciones de asignación de mensajes generadas

     

    virtual BOOL OnInitDialog();

    afx_msg

    void OnSysCommand(UINT nID, LPARAM lParam);

    afx_msg

    void OnPaint();

    afx_msg HCURSOR OnQueryDragIcon();

    DECLARE_MESSAGE_MAP()

    public

     

    :

    CListCtrl m_ListPerfiles;

    afx_msg

    void OnBnClickedButtonNuevo();

     

    void CargarPerfiles(void);

    CString ProcesarCadena(CString sItem, CString sCadena);

    CList<CPerfiles, CPerfiles> m_ListaPerfiles;

    };

    Como veis trato de tener, dentro de la clase del dialogo, una coleccion CList denominada m_ListaPerfiles. Los elementos de esta son CPerfiles que contienen dentro otra coleccion denominada m_ListaAcciones. Pues bien, esto da error al compilar.

    ¿Me podria alguien decir por que no funciona o de que forma podria hacerlo?

    Es una aplicacion dialogo con MFC en Visual Studio 2008 Pro.

    Gracias.

    martes, 2 de febrero de 2010 18:53

Todas las respuestas

  • Es muy posible que te falte la sobrecarga del operador de copia y de asignación tanto de CAccion como de CPerfiles, pero como no nos pones qué error es, poco más te puedo decir.
    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    lunes, 8 de febrero de 2010 17:45
    Moderador
  • Hola, gracias por responder.

    Perdon... ciertamente no he puesto el error. Son estos:

    1>c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h(776) : error C2248: 'CObject::CObject' : no se puede obtener acceso al miembro private miembro declarado en la clase 'CObject'
    1>        c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(551) : vea la declaración de 'CObject::CObject'
    1>        c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(522) : vea la declaración de 'CObject'
    1>        Diagnóstico en la función 'CList<TYPE,ARG_TYPE>::CList(const CList<TYPE,ARG_TYPE> &)' generada por el compilador
    1>        with
    1>        [
    1>            TYPE=CAccion,
    1>            ARG_TYPE=CAccion
    1>        ]
    1>c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h(776) : error C2248: 'CObject::operator =' : no se puede obtener acceso al miembro private miembro declarado en la clase 'CObject'
    1>        c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(552) : vea la declaración de 'CObject::operator ='
    1>        c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(522) : vea la declaración de 'CObject'
    1>        Diagnóstico en la función 'CList<TYPE,ARG_TYPE> &CList<TYPE,ARG_TYPE>::operator =(const CList<TYPE,ARG_TYPE> &)' generada por el compilador
    1>        with
    1>        [
    1>            TYPE=CAccion,
    1>            ARG_TYPE=CAccion
    1>        ]
    1>ViCaDlg.cpp
    1>c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h(776) : error C2248: 'CObject::CObject' : no se puede obtener acceso al miembro private miembro declarado en la clase 'CObject'
    1>        c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(551) : vea la declaración de 'CObject::CObject'
    1>        c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(522) : vea la declaración de 'CObject'
    1>        Diagnóstico en la función 'CList<TYPE,ARG_TYPE>::CList(const CList<TYPE,ARG_TYPE> &)' generada por el compilador
    1>        with
    1>        [
    1>            TYPE=CAccion,
    1>            ARG_TYPE=CAccion
    1>        ]
    lunes, 8 de febrero de 2010 20:37
  • Efectivamente, te falta el constructor de copia y de asignación: 

    http://juapri.freehostia.com/?p=7
    http://en.wikipedia.org/wiki/Copy_constructor
    http://en.wikipedia.org/wiki/Assignment_operator_in_C%2B%2B


    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    lunes, 15 de febrero de 2010 11:31
    Moderador
  • Muchas gracias. 

    Vere las paginas que me relacionas y a ver si soy capaz de hacerlo funcionar.

    Perdon por no contestar antes... pero no he recibido el mensaje de alerta de esta ultima entrada tuya y no se por que...

    Gracias nuevamente.

    viernes, 19 de febrero de 2010 19:32