compilation de Gcc3.2 a Gcc3.4 - C++ - Programmation
Marsh Posté le 20-09-2013 à 15:03:33
Je ne sais pas ce que dit le standard à ce sujet, mais mon GCC 4.5 me dit pareil.
Tu ne peux pas mettre simplement ca :
Code :
|
Tu gardes ton typedef, mais seulement pour la déclaration de friend, tu continues à référencer explicitement la classe.
Marsh Posté le 20-09-2013 à 15:13:37
mais a ce moment la Nested n'appartient qu'à A, non ?
Ou bien, le typedef defini la structure de cette class B et le friend lie cette Nested de B a la Nested de A.
Desole, je suis loin d'etre un cador en C++....
Marsh Posté le 20-09-2013 à 15:28:36
ca a l'air de compiler, par contre je suis obligé de rajouter la class B dans le friend :
Code :
|
est ce normal ?
Marsh Posté le 20-09-2013 à 15:29:34
fred313813 a écrit : mais a ce moment la Nested n'appartient qu'à A, non ? |
Ce que friend fait, c'est que ca autorise la classe que tu lui donnes à accéder aux données privées ou protégées de la classe dans laquelle ta déclaration de friend se trouve.
Dans mon exemple, ca te permettrait depuis A::Nested d'accéder à des données privées de B.
C'est complètement décorellé de ton typedef.
Marsh Posté le 20-09-2013 à 15:30:14
fred313813 a écrit : ca a l'air de compiler, par contre je suis obligé de rajouter la class B dans le friend :
|
Qu'est-ce que tu veux dire par là ? Ta classe A::Nested est un template ?
Marsh Posté le 20-09-2013 à 15:46:38
aie, ca fonctionne pour 90%, seul 10% me dit que ce n'est pas un template.....
et dans ces 10%, si je ne mentionne pas le template dans friend class A::Nested il m'envoie l'erreur suivante :
friend declaration does not name a class or function
desole d'etre saoulant ...
Marsh Posté le 20-09-2013 à 15:50:37
ReplyMarsh Posté le 20-09-2013 à 15:53:13
theShOcKwAvE a écrit : C'est quoi cette histoire de 90% / 10% ? |
et bien j'avais un certains nombres d'erreurs de compilations identiques (dans notre etude de cas nos 100%)
Marsh Posté le 20-09-2013 à 15:57:43
desole, en faisant mes copier/coller, j'avais malencontreusement remplace une classe par une autre.
Marsh Posté le 20-09-2013 à 16:09:18
nickel, il me reste plus qu'a resoudre ce pb de errno et puis ca va rouler.
Merci beaucoup pour ton aide.
Je vais essayer de recompiler en 3.2 apres tout ca.
Marsh Posté le 20-09-2013 à 13:46:28
Bonjour,
petite question : je suis en train de recompiler une librairie pour un passage de rhel3 a rhel4.
Bien sur ceci implique un changement de gcc également (depuis 3.2 vers 3.4).
L'ensemble de la librairie se compile bien si ce n'est une petite portion de code :
typedef MyClass::OnChange <MyInsideClass> OnChange;
friend class OnChange;
le compilateur me sort un
error : using typedef-name 'MyInsideClass::OnChange' after 'class'
Il s'agit d'un problème de déclaration de cette class friend mais je n'arrive pas a le résoudre.
Merci pour votre aide