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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
class C3DSlicer
{
typedef CPointCloudRenderingStrategy::eShape eShape;
......};
PointCloudRenderingStrategy.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
class CPointCloudRenderingStrategy
{
typedef CPointCloud::eShape eShape;
......};
PointCloud.h
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;
......};
C'est peut être un peu capillotracté mais d'habitude, je n'ai pas de souci avec ce genre de déclaration/définition...


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