IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Methode renvoyant un CString


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Par défaut Methode renvoyant un CString
    Bonjour à tous

    J'ai une fonction (pardon... "méthode" )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CString CMaClasse::GetDefaultName()
    {
    	CString str;
    	CTime time;
    	time.GetCurrentTime();
    	str.Format(_T("%4.d%2.d%2.d%2.d%2.d%2.d"), time.GetYear, time.GetMonth, time.GetDay, 
    		time.GetHour, time.GetMinute, time.GetSecond);
    	return str;
    }
    Or, quand je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CString str;
    str = GetDefaultName;
    ... le môssieur de la machine me dit error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class CString (__cdecl CBMSudokuGridsList::*)(void)' (or there is no acceptable conversion) pour la ligne d'affectation de str ! Je précise que sans cette ligne, tout lui convient !

    A l'aiiiide !

    ...et merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    si c'est une méthode...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CString str;
    str = GetDefaultName();
    il manque les parenthèses

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Par défaut
    Salut farscape

    Je suis d'accord, cependant - en attendant de faire l'essai ce soir -, lorsque j'oublie des parenthèses dans le cas d'une méthode ne demandant pas d'arguments, le debogueur m'envoie seulement un "warning" pour me dire que ça serait mieux d'en mettre . Or là, je n'ai que ce message d'erreur. Donc, il doit s'agir d'autre chose Quoiqu'il en soit, je corrige ça dès que je peux, des fois que le message soit différent

    Donc, sujet toujours ouvert, sachant que je continue de chercher... et peut être de trouver

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    une méthode (avec des arguments ou non ) a toujours des parenthèses sinon le nom est considéré comme une variable..
    note que l'appel à ta fonction doit être situé dans une méthode de ta classe
    CMaClasse... d'ailleurs ton message d'erreur fait référence a une autre classe CBMSudokuGridsList doit a mon avis tu t'embrouilles avec des méthodes portant le même nom dans des classes différentes..


  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Par défaut
    En ce qui concerne le nom de la classe, j'avais bien sûr pris un nom "bidon" dans la citation de mon code, pour simplifier, sauf que je n'avais pas corrigé le message d'erreur de la même façon

    Sinon, dans le cas général, lorsqu'il ne reconnaît pas un "identifiant" - donc s'il cherchait une variable GetDefaultName, il me donnerait un tout autre message, - comme celà m'est déjà arrivé, tu t'en doutes -. Donc, à mon avis, il voit bien que je parle de ma méthode, mais peut-être que, dans le cas du retour d'un CString, l'oubli des parenthèses lors de l'appel n'est plus toléré comme il l'est dans le cas d'un int, par exemple, comme je le dis dans mon précédent message. J'essaye donc ce soir, en te tenant au courant bien sûr (et tous ceux qui s'occuperaient de mon cas)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 41
    Par défaut
    ...après essais... concluants, puis quelques simulations, voici mes observations :

    - lorsqu'on appelle une méthode de type void ne demandant aucun paramètre en ommettant les parenthèses, on obtient du compilateur le simple avertissement suivant :
    warning C4551: function call missing argument list
    ...sachant que cela ne l'empêche pas de compiler et de produire un EXE totalement opérationnel.

    - lorsqu'en revanche on appelle une méthode "non-void" ne demandant aucun paramètre en ommettant les parenthèses, on obtient du compilateur le message d'erreur suivant :
    error C2440: 'initializing' : cannot convert from 'int (__cdecl *)(void)' to 'int'
    ...l'empêchant de poursuivre la compilation !

    En fait c'est exactement le message que j'obtenais, sauf que la fonction de ce matin ramenait un CString et celle de mon test un int (d'ailleurs, depuis que j'ai mis les parenthèses à mon GetDefaultName... ça marche beaucoup mieux )

    Curieux, cette différence de réaction au même type d'erreur de syntaxe

    Donc merci à farscape pour sa patience, et j'espère que ce post sera utile à d'autres qui pourraient être confronté à ce genre de chose.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Methode renvoyant un array
    Par mickmix69 dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/11/2011, 13h01
  2. Réponses: 5
    Dernier message: 27/03/2008, 15h54
  3. Faire renvoyer une valeur 'true' par une methode ?
    Par patthepat dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 10/05/2007, 05h51
  4. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33
  5. fonction renvoyant un tableau en argument
    Par Jones dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2002, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo