C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Un temporaire a été utilisé pour initialiser...

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Michaël Delva
Guest





PostPosted: Wed Sep 03, 2003 8:57 pm    Post subject: Un temporaire a été utilisé pour initialiser... Reply with quote



Bonsoir,

en compilant mon programme (avec BCB 6), j'ai eu l'avertissement suivant:

[C++ Avertissement] FicheAnalyseColl.cpp(169): W8028 Un temporaire a été
utilisé pour initialiser 'TA'

Voici les infos nécessaires:

class Analyse_Donnees
{
public:
//Nom de la stat + Frame de la stat
typedef pair<AnsiString,int> Paire_Ansi_Int;
//nom de la stat + liste des Frames
typedef vector<Paire_Ansi_Int> ActionsUneStat;
typedef ActionsUneStat::iterator ite_Stat;
//Nom du joueur + stats
typedef map<AnsiString, ActionsUneStat> ActionsJoueurs;
typedef ActionsJoueurs::iterator ite_Action_Joueur;
//Equipe + Joueurs
typedef map<AnsiString, ActionsJoueurs> ToutesActions;
typedef ToutesActions::iterator ite_Action_Equipe;

const ToutesActions & m_TA() const { return this->TA; }
private:
ToutesActions TA;
};

Et l'avertissement a lieu à cette ligne, dans une autre classe:

Analyse_Donnees::ToutesActions & TA = A_D->m_TA();

Par contre si je mets la ligne de déclaration de TA en public et que je
mets:

Analyse_Donnees::ToutesActions & TA = A_D->TA;

Je n'ai plus ce problème.

BCB dit qu'il me met cet avertissement:

En C++, une variable ou un paramètre de type référence doit se voir
affecter une référence à un objet du même type. Si les types ne sont pas
identiques, la valeur est affectée à un temporaire du bon type, et
l'adresse du temporaire est affecté à la variable ou au paramètre de
référence. Cet avertissement signifie que la variable ou le paramètre de
référence ne désigne pas ce qui était prévu, mais une variable temporaire
autrement inutilisée.

Hors, j'affecte une référence du même type!!

Pourriez vous m'expliquer ce qui cloche?
Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Sep 03, 2003 9:17 pm    Post subject: Re: Un temporaire a été utilisé pour initialiser... Reply with quote



On 03 Sep 2003 20:57:39 GMT, "Michaël Delva" <zoubidaman (AT) hotmail (DOT) com>
wrote:

Quote:
const ToutesActions & m_TA() const { return this->TA; }
private:
ToutesActions TA;
};

Et l'avertissement a lieu à cette ligne, dans une autre classe:

Analyse_Donnees::ToutesActions & TA = A_D->m_TA();

Tu essaies de convertir un "const ToutesActions &" en un
"ToutesActions &". Ce n'est pas possible, donc le compilateur crée un
objet temporaire non-const.


Back to top
Michaël Delva
Guest





PostPosted: Wed Sep 03, 2003 9:42 pm    Post subject: Re: Un temporaire a été utilisé pour initialiser... Reply with quote



Quote:
Tu essaies de convertir un "const ToutesActions &" en un
"ToutesActions &". Ce n'est pas possible, donc le compilateur crée un
objet temporaire non-const.



Donc il faut que j'enlève un const...

Mais lequel des deux?

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.