freepouy18
Messages postés49Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention15 septembre 2005
-
8 août 2005 à 12:04
freepouy18
Messages postés49Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention15 septembre 2005
-
9 août 2005 à 15:30
Bonjour tlm,
J'ai un petit souci avec une methode de classe qui doit retourner un tableau de structure. Voila ce que je veux faire :
MaClasse.h
//*****************************
class CMaClasse
{
public :
struct Test
{
CString name;
CString tab_notes[50];
};
struct Test *Set();
}
//*****************************
MaClasse.cpp
//*****************************
struct Test *CMaClasse ::Set()
{
Test *Mastructure;
error C2556: 'struct Test *__thiscall CMaClasse::Set()' : overloaded function differs only by return type from 'struct CMaClasse::Test *__thiscall CPSAWordMod1::Set()') :
error C2371: 'Set' : redefinition; different basic types
Le code de la methodes est bon mais c'est vraiment au niveau des déclarations que j'ai un soucis.
Merci pour votre aide, bonne journée....
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 8 août 2005 à 21:06
Bonsoir Steeve. Je crains que tu ais fait qq erreurs aussi. "typename"
est inutile car il n'y a aucune ambiguité. Tu as oublié un * dans la
définition (je pense que le lecteur aura corrigé de lui même, c'est
just eun oubli).
En outre, j'ai donné la solution au probleme au début et ca passe sous GCC. Je la redonne de manière plus explicite :
.h:
class CMaClass
{
public:
struct Test {};
Test * Set();
};
.cpp :
CMaClass::Test * CMaClass::Set(){}
Freep : aligne nous deux lignes de code C++ correct et on en reparle, alors ecoute.
freepouy18
Messages postés49Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention15 septembre 2005 8 août 2005 à 14:13
J'ai essayé d'enlever struct mais ça ne fonctionne pas nonplus!!!
erreurs :
error C2143: syntax error : missing ';' before '*'
error C2501: 'Test' : missing storage-class or type specifiers
error C2501: 'Set' : missing storage-class or type specifiers
en ce qui concerne les pointeurs que me proposes-tu comme autre solution alors (dans ce cas précis biensur)?
Vous n’avez pas trouvé la réponse que vous recherchez ?
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 8 août 2005 à 14:32
De ne pas en utiliser pour te simplifier la vie : std::vector te permet de faire des tableaux sans te préocuper de l'allocation, de la libération et de tous les problemes de copie/affectation.
.h -> Test * Set();
.cpp -> CMaClasse::Test * CMaClasse::Set()...
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 8 août 2005 à 14:34
c'est de l'acharnement ma parole, ya po moyen de rester sur un seul post??
imaginez un peu celui qui a un pb et cherche une soluce, il va tomber
sur tt ceux ci et du coup ne trouvera rien de concrêt que des ptts
bouts d'infos de ci dela
qd ça reste sur le mm sujet, ne changez pas de post !
freepouy18
Messages postés49Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention15 septembre 2005 8 août 2005 à 16:23
Si vous etes si fort que ça, résolvez mon problème au lieu de critiquer les pers qui sont là pour apprendre sinon abstenez vous ça vaudra mieux. Ok vs avez essayez de m'aider j'ai suivi vos conseils, ça ne marche pas, alors je pense que vous devez aussi réviser
freepouy18
Messages postés49Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention15 septembre 2005 9 août 2005 à 09:49
Ecoute xterminhate pour ce qui est des deux lignes de code dont tu parles, figure toi que c'est exactement la première solution que j'ai testé avant même d'ecrire ce post. Les erreurs étaient bien là alors que c'etait la solution la plus logique et surtout la plus juste. Le fait est que lorsque j'ai pris ton exemple, le test a fonctionné mais le plus etonnant c'est qu'avec le même code placé à un endroit différent, à savoir avec la structure avant le constructeur de classe et la définition de la méthode après, ça ne passe pas.
Je ne suis pas sûre que tu savais que ce genre d'erreurs était dû à une histoire de placement de code et à rien d'autre. Alors quand je te dis que je suis les conseils qui me sont donnés et que ça ne fonctionne pas, je ne le fais pas par plaisir.
xterminhate
Messages postés371Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention23 septembre 2009 9 août 2005 à 11:24
Ce n'est pas tres clair... Par exemple, si je place la déclaration de struct avant celle du contructeur, et si je place la définition de la fonction membre apres celle du contructeur et bien ca compile tout aussi bien.
struct CMaClass
{
struct Test {}; // déclaration avant constructeur de la classe
CMaClass();
Test * Set();
};
L'ordre d'apparition des déclaration doit être logique. L'ordre d'apparition des définitions n'a pas d'importance. Ainsi, le seul cas vraiment foireux - que j'imagine - est le suivant :
Test * Set(); // utilisation d'un type non encore déclaré.
struct Test {};
Donne nous ton code complet si tu veux être aidé de manière efficace et si le probleme persiste.
freepouy18
Messages postés49Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention15 septembre 2005 9 août 2005 à 15:30
xterminhate : c'est bon, c'était juste pour te dire que ta solution proposée est celle que j'avais essayé avant de poster mon pb et que c'est la bonne. Je n'ai plus de problème avec ça. Maintenant, pourquoi cette histoire ne fonctionne pas chez moi, MYSTERE.
L'essentiel est que mon pb est résolu et je vous en remercie.