Bonjour,
je ne sais pas si VS2005 n'aime pas l'arrivée de l'automne, mais j'ai plein de pbs avec lui en ce moment ...
En voici un qui me surprend : j'ai défini une classe (CPointCloud) et je souhaite en cacher l'utilisation dans le composant de haut niveau.
J'ai donc le "diagramme' d'utilisation" suivant.
uses uses
C3DSlicer --------> CPointCloudRenderingStrategy --------> CPointCloud
J'ai "propagé" la définition des types internes :
3DSlicer.h
PointCloudRenderingStrategy.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class C3DSlicer { typedef CPointCloudRenderingStrategy::eShape eShape; ......};
PointCloud.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class CPointCloudRenderingStrategy { typedef CPointCloud::eShape eShape; ......};
C'est peut être un peu capillotracté mais d'habitude, je n'ai pas de souci avec ce genre de déclaration/définition...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class CPointCloud { public : typedef struct SPointStruct { typedef enum eShape { SQUARE=0, CIRCLE, }; CPoint3D m_Pt; COLORREF m_PointColor; eShape m_PointShape; CString m_Text; }; typedef SPointStruct::eShape eShape; ......};
Mais aujourd'hui, ca me plante le compilateur MSVC avec une erreur interne "C 1001" + erreur du compilateur d'optimisation alors que j'ai desactivé toutes les optimisations (mode DEBUG)
.
Je ne sais qu'en penser ! Est-ce la propagation de la definition des types est a proscrire ou pas conseillée (et pourquoi alors ...) et que faire a la place alors ?
Ou est-ce un bug du compilo ?
V
Partager