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

C++ Discussion :

demande de précision sur * (suite)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Par défaut demande de précision sur * (suite)
    Bonsoir à tous!
    A la suite d'un précédent "post" j'ai appris que:
    type* variable et type *variable sont le même chose. Pourtant, en faisant des essais sur les threads de la glib voila ce qui ce passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        GThread *thread1,*thread2;
        thread1=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
        thread2=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
    Compilation sans probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        GThread* thread1,thread2;
        thread1=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
        thread2=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
    /home/.../main.cc||In function \int main()\
    /home/.../main.cc|30|erreur: no match for \operator= in thread2 = g_thread_create_full(((void* (*)(void*))f), ((void*)p_str), 0u, 1, 0, G_THREAD_PRIORITY_NORMAL, 0u)
    /usr/include/glib-2.0/glib/gthread.h|60|note: candidats sont: _GThread& _GThread::operator=(const _GThread&)|
    /home/.../main.cc|33|erreur: cannot convert GThread to GThread* for argument to void* g_thread_join(GThread*)|
    ||=== Build finished: 2 errors, 0 warnings ===|
    Bien sur, si je déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GThread* thread1;
    GThread* thread2;
    Il n'ya plus de problème. Mais tout de même..."type* v" et "type *v". C'est pas vraiment pareil. Non?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Gea,
    Citation Envoyé par Krishna Voir le message
    Bonsoir à tous!
    A la suite d'un précédent "post" j'ai appris que:
    type* variable et type *variable sont le même chose. Pourtant, en faisant des essais sur les threads de la glib voila ce qui ce passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        GThread *thread1,*thread2;
        thread1=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
        thread2=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
    Compilation sans probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        GThread* thread1,thread2;
        thread1=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
        thread2=g_thread_create((GThreadFunc)f,p_str,TRUE,NULL);
    Bien sur, si je déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    GThread* thread1;
    GThread* thread2;
    Il n'ya plus de problème. Mais tout de même..."type* v" et "type *v". C'est pas vraiment pareil. Non?
    Si, c'est exactement la même chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        GThread *thread1,*thread2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        GThread* thread1,thread2;
    ne sont sont absolument pas la même déclaration.

    Dans le 1er cas, thread1 et thread2 sont des pointeurs sur GThread,

    et dans le 2ème cas, thread1 est un pointeur sur GThread, alors que thread2 est un GThread.

    Le 2ème cas est absolument équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        GThread *thread1, thread2;
    C'est là un problème basique de déclaration !!

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Par défaut
    Ok ok ok merci encore...

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Une bonne idée : Ne déclarer qu'une seule variable par ligne (mêrme si cela semble alourdir l'écriture), c'est du temps de gagné en lecture en debuggage et en modifications ultérieures.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si GThreadFunc est un type pointeur de fonction, supprime ce cast immédiatement et déclare ta fonction du bon type. Un cast de pointeur de fonction, si on peut l'éviter, il ne faut surtout pas hésiter. Surtout un affreux cast C-style.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Demande de précisions sur les niveau de visibilité
    Par rbello dans le forum Langage
    Réponses: 6
    Dernier message: 16/09/2007, 23h32
  2. [Xquery] demandes de précision sur XQuery
    Par totoranky dans le forum XQUERY/SGBD
    Réponses: 7
    Dernier message: 31/05/2007, 11h06
  3. Réponses: 13
    Dernier message: 15/01/2007, 08h32
  4. Demande de précision sur "Extends" ..
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 12/02/2006, 14h25
  5. Demande de précisions sur Backup/Restore et transactions
    Par lio33 dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 16/11/2005, 12h08

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