begin process at 2012 05 30 19:43:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

[VS.NET] Une erreur de compilation incroyable!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[VS.NET] Une erreur de compilation incroyable!

samedi 16 juillet 2005 à 11:19:17 | [VS.NET] Une erreur de compilation incroyable!

Sunsawe

Bonjour,
excusez moi mais je ne savais pas comment titrer mon message autrement.
Voilà là fameuse erreur qui se suffit à elle même:

<chemin>Mesfunc.cpp(72) : error C2665: 'afficheInfo' : none of the 2 overloads can convert parameter 2 from type 'std::ostream'
        <chemin>Mesfunc.h(14): could be 'MaClasse *afficheInfo(MaClasse *,std::ostream)'
        <chemin>Mesfunc.h(15): or       'MaClasse *afficheInfo(const char *,std::ostream)'
        while trying to match the argument list '(MaClasse *, std::ostream)'

Alors je ne sais pas si vous voyez le truc, mais il ne veut pas compiler parce qu'il ne peut pas convertir un std:ostream en...std::ostream!!!!!!!!!!!!!!!

Alors là j'ai vraiment besoin qu'on m'explique!!
Merci

samedi 16 juillet 2005 à 12:35:32 | Re : [VS.NET] Une erreur de compilation incroyable!

cosmobob

salut,
il manque des informations !!
copie-colle ici tout ton fichier .h
quel est le type du premier parametre quand tu appelles afficheInfo à la ligne 72 de ton fichier mesfunc.cpp ??
copie colle tout l'appel.

a+


samedi 16 juillet 2005 à 12:48:16 | Re : [VS.NET] Une erreur de compilation incroyable!

Sunsawe

Oui je vois ce que tu veux dire mais non.
Regarde bien le texte de l'erreur!!
Il te dit ne pas pouvoir transtyper le deuxième paramètre depuis 'std::ostream'  que les appels possibles sont ceux ci : 'MaClasse *afficheInfo(MaClasse *,std::ostream)' et 'MaClasse *afficheInfo(const char *,std::ostream)' alors que j'essai de faire appel avec ça: '(MaClasse *, std::ostream)'.
Voilà texto ce que l'erreur dit donc le compilo te dit lui même que mes arguments sont corrects!

Moi voilà tout de même la ligne 72 qui n'est pas un appel c'est le corps de la surcharge de la fonction.
MaClasse * afficheInfo(const char * sonsi,ostream sor)
{
   
MaClasse *mavar=NULL;
   
mavar=new MaClasse(sonsi);
    afficheInfo(
mavar,sor); //ligne 72
    return mavar;
}

Ce qui est le plus hallucinant c'est que sous vc6 ça compile et execute sans pro. Vraiment j'aimerai bien savoir où est mon erreur.


samedi 16 juillet 2005 à 13:04:46 | Re : [VS.NET] Une erreur de compilation incroyable!

cosmobob

l'erreur peut parait ambigue, c'est pour ca que je pense que c'est mieux si tu copies-colle ici tout ton .h. A priori, si un des deux compilateurs est buggé, c'est plus vc6 que vs7.
la a mon avis, pb avec les espaces de nommages...
dans ton .h tu ne doit pas avoir de using namespace std; et avoir
'MaClasse *afficheInfo(MaClasse *,std::ostream)' comme prototype.
dans ton .cpp, essaie de surchager avec std:: ou sans, d'enlever le using namespace std;

enfin bon, si ton but c'est pas de résoudre ton pb, mais de dire regardez c'est mysterieux ...
-> montre ta source !!!!!


samedi 16 juillet 2005 à 13:14:51 | Re : [VS.NET] Une erreur de compilation incroyable!

cosmobob

ha ben moi j'ai trouvé d'ou vient ton pb ;)
(qui n'aurait pas été trouvé sans le corps de ta fonctions).

le type ostream ne possede pas de constructeur de copie.
change le prototype de tes deux fonctions, et mets un passage par reference !!
MaClasse * afficheInfo(const char * sonsi,ostream& sor);
MaClasse * afficheInfo(MaClasse * sonsi,ostream& sor)

moi j'ai re obtenu ton erreur, et la suite du message m'a été utile:

error C2664: 'test' : impossible de convertir le paramètre 2 de 'std::ostream' en 'std::ostream'
        Aucun constructeur de copie n'est disponible pour class 'std::basic_ostream<_Elem,_Traits>' ou le constructeur essaie d'exécuter une conversion non conforme en référence non-__gc
        with
        [
            _Elem=char,
            _Traits=std::char_traits<char>
        ]

a+


samedi 16 juillet 2005 à 13:37:49 | Re : [VS.NET] Une erreur de compilation incroyable!

Sunsawe

Pourquoi moi j'ai pas la suite du message? il m'aime pas ou quoi?
Enfin bon apparement ça semble venir de là.
Mais pourquoi sous vc6 ça compile et ça marche?
vc7 est plus strict? mais là c'est même pas l'histoire si y'a pas de constructeur par copie, ça ne devrait pas marcher quelque soit le compilateur non?

samedi 16 juillet 2005 à 13:46:42 | Re : [VS.NET] Une erreur de compilation incroyable!

cosmobob

-> vc6 est vraiment buggé.
Peut etre qu'il implemente une version de ostream qui possede un constructeur de copie, mais j'en doute.
A retenir : pour convertir un type en un autre (meme si ce sont les memes), il faut un constructeur de copie ou un operateur d'affectation.

a+



Cette discussion est classée dans : erreur, std, maclasse, ostream, mesfunc


Répondre à ce message

Sujets en rapport avec ce message

erreur link2001 [ par balbeau ] J'ai l'erreur souivante qui commence à "m'agacer"......Loading.obj : error LNK2001: symbole externe non résolu "class std::basic_ofstream > fout" (?fo erreur imcompréhensible :'( [ par iam_myst ] /usr/include/c++/4.0.2/ext/mt_allocator.h: In member function ‘void __gnu_cxx::__mt_alloc_base::construct(_Tp*, const _Tp&) [with _Tp = Sommet]’: /usr GetWindowLong, cast & méthodes virtuelles [ par MyXiLo ] Bonsoir,Mon soucis est que, lorsque je cast le resultat d'un GetWindowLong en un pointeur, l'appel d'une fonction virtuelle de l'objet pointe provoque Declaration de variables [ par wismerhill__ ] Bonjour, je cherche à faire qqch de tres simple : créer un std::vector dans un constructeur de classe.J'ai essayé MaClasse::MaClasse{monvecteur= new s template rendre friend un operator<< [ par littlenemo ] Hello world !!Un petit merci a tout ce qui me lirons et peut etre un grand a celui qui me donne ma reponce.Alors je vous mets dans le bain:Je doit cod Erreur de type LNK 2005 [ par BenGourion73 ] Bonjour, J'ai une solution en développement qui se compose d'une librairie statique et d'un exécutable. La librairie statique compile bien toute seule [VC++] erreur : std is not a class... ??? [ par elo29 ] Bonjour, Je code sous Visual C++ et il refuse le "using namespace std". L'erreur est la suivante : error C2653 : 'std' is not a class or a namespace Template avec surcharge d'opérateurs [ par benjiiim94 ] Bonjour,J'essaie déséspéremment de créer une petite classe pour me familiariser avec les templates. Non sans mal j'ai obtenu un résultat pas mal jusqu Shared Library [ par omarlahlou ] Bonjour tout le monde, <p class="MsoN [Qt Linux] Aide pour une erreur HELP [ par ribery91720 ] Grace à vous j'ai trouvé. Maintenant j'ai une nouvelle erreur dans une autre fonction. Voila l'erreur que j'obtiens :classwizard.cpp:770: erreur: pass


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales