Saludos al foro, espero que sea el foro adecuado para mi duda.
Hace ya un buen que no programaba en C++, la versión que estoy usando es VS 2008 Professional, instalación completa.
Me han dado un código ya desarrollado que supuestamente compila, con la interfaz ribbon (qué manía de copiar interfaces) para hacer ciertas mejoras. No tengo contacto con el desarrollador original. El problema que tengo es el siguiente:
Cita:
error C2248: 'CMFCPropertyGridProperty::m_varValue' : cannot access protected member declared in class 'CMFCPropertyGridProperty'
c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxpropertygridctrl.h(212) : see declaration of 'CMFCPropertyGridProperty::m_varValue'
c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxpropertygridctrl.h(33) : see declaration of 'CMFCPropertyGridProperty'
|
Originado por la línea de código
Código:
((CMainFrame*)AfxGetMainWnd())->m_wndProperties.pKPInterval->m_varValue.bstrVal = meandistanceStr.AllocSysString();
Entiendo que no hay acceso a m_varValue por estar en la seccion protected, aunque para mi lógica sí deberia ser posible, de hecho no he modificado el código fuente aún, sólo intenté compilarlo. Tengo otras líneas con error como
Código:
m_wndprogressBar.m_nWidth = 400;
m_wndprogressBar.m_nHeight = 30;
con el error
Cita:
.\MainFrm.cpp(76) : error C2248: 'CMFCRibbonProgressBar::m_nWidth' : cannot access protected member declared in class 'CMFCRibbonProgressBar'
c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxribbonprogressbar.h(69) : see declaration of 'CMFCRibbonProgressBar::m_nWidth'
c:\archivos de programa\microsoft visual studio 9.0\vc\atlmfc\include\afxribbonprogressbar.h(25) : see declaration of 'CMFCRibbonProgressBar'
|
Y otro ejemplo
Código:
CMyView* pViewGraph = (CMyView*)((CMainFrame*)AfxGetMainWnd())->m_pViewActive;
con el error
Cita:
.\MyDoc.cpp(178) : error C2248: 'CFrameWnd::m_pViewActive' : cannot access protected member declared in class 'CFrameWnd'
C:\Archivos de programa\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxwin.h(3866) : see declaration of 'CFrameWnd::m_pViewActive'
C:\Archivos de programa\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxwin.h(3720) : see declaration of 'CFrameWnd'
|
De hecho son los tres únicos tipos de error pero en mas de 100 lineas similares. Una solución chapucera fué mover las declaraciones de protected hacia public, pero obviamente no debo modificar los fuentes del sistema, sólo los del programa ya desarrollado. Logré correr el programa de esta manera pero me generó errores al momento de refrescar la ventana de la aplicación.
Cómo puedo arreglar estos errores sin modificar los fuentes de C++? Es algo de namespaces? Ando perdido. Espero que sea un setting de C++, ya que no me proporcionaron el archivo original .sln, y solamente un archivo .suo con sólo parámetros de release.
Toda la ayuda es bienvenida