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 :

[type] CObject


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut [type] CObject
    Bonjour j'aimeais juste savoir quel est le type qui peut se transformer en n'importe quel autre type..j'Ai essayer variant mais çca ne marche pas est ce que c bien COBject?

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Il n'y a pas ce genre de type en C++ de base. Il peut être simulé mais ce n'est pas dans l'esprit C++. Pourquoi as-tu besoin d'un tel type ?

  3. #3
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    un tres grand nombre de classe MFC (toutes?) sont dérivés de CObject comme les class java sont dérivées de TObjet.

    comme dit ci dessus : tu veux faire quoi ?

  4. #4
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    La classe Object est utilisée comme type universel sous C++ CLI (et donc .NET)

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Il peut être intéressant d'avoir une class Objet dans un langage comme Java, ou C# (et donc forcément C++/CLI), qui ne connaissent pas vraiment les templates de C++. Dans le cas du C++, l'intérêt reste à prouver (et il a plutôt été prouvé négativement).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    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 392
    Par défaut
    Encore que, j'ai un prof qui trouve que les templates sont une aberration car ça donne une taille de code monstrueuse (Lui, il préfère des collections de void *, quan don les gère adroitement ça marche très bien).


    Mais j'admets que sur un PC, on ne compile plus en -Os depuis un fameux moment... Ce n'est plus le code qui prend le plus de place dans un programme.
    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.

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Médinoc
    Encore que, j'ai un prof qui trouve que les templates sont une aberration car ça donne une taille de code monstrueuse (Lui, il préfère des collections de void *, quand on les gère adroitement ça marche très bien).
    Il faudrait peut-être lui signaler d'une part qu'il n'est pas très compliqué de partager le code partageable quand c'est nécessaire, d'autre part que les templates sont utilisés pour bien d'autres choses que les collections.

    Mais j'admets que sur un PC, on ne compile plus en -Os depuis un fameux moment... Ce n'est plus le code qui prend le plus de place dans un programme.
    Tout dépend des programmes. Il y a toujours eu des programmes pour lesquels on aurait bien aimé garder toutes les données en mémoire si ç'aurait été possible; ne l'étant pas, on continue à s'arranger autrement. Chose qu'on ne doit plus faire pour le code (mais qu'on a fait).

    Dans l'autre sens, je me demande si tu as déjà regardé la taille des bibliothèques partagées utilisées par quasiment n'importe quel programme...

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par JolyLoic
    Il peut être intéressant d'avoir une class Objet dans un langage comme Java, ou C# (et donc forcément C++/CLI), qui ne connaissent pas vraiment les templates de C++. Dans le cas du C++, l'intérêt reste à prouver (et il a plutôt été prouvé négativement).
    boost::any :-)

    Le problème principal est que si le langage ne la fournit pas, c'est impossible à ajouter par après de manière raisonnable. On ne peut même pas en faire une convention dans un projet important car cette convention ne sera pas suivie par le code étranger que tôt ou tard on sera amené à réutiliser.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Citation Envoyé par Médinoc
    Encore que, j'ai un prof qui trouve que les templates sont une aberration car ça donne une taille de code monstrueuse (Lui, il préfère des collections de void *, quan don les gère adroitement ça marche très bien).
    Tout le code d'une classe template qui ne dépend pas du type d'instanciation est (si c'est correctement programmé) regroupé au sein d'une classe non générique dont la classe template hérite.
    La plupart des implémentations des conteneurs de la STL marchent comme ça, ce qui implique qu'en interne, elles manipules des collections de void *, mais assurent à l'utilisateur un typage correct.
    Quant à la taille du code généré, si dans certain cas, cela peut-être un problème, je pense qu'aujourd'hui la majeure partie des applications préfères un code plus flexible et plu sûr, quitte à ce qu'il prenne plus de place.

  10. #10
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Et puis quand tu manipules un tableau, tu as forcément derrière un code assembleur spécifique au type des données du tableau. Si c'est un tableau d'octets, ce code parcourera la mémoire octet par octet, si c'est des int, probablement à coup de 4 octets. C'est obligatoire.
    Avec les templates, ce code est généré au sein des opérateur spécialisés [] et at(). Si c'est des void*, c'est dans ton code d'accès peu après le cast en char * ou int *. Donc ça revient au même, strictement.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Par défaut
    désolée pour ler etard dans mes érponses mais j'étais sur un autre problèmes et j'ai oubliéé
    en fait ce que j'aimerais faire, c'Est certaines opérations sur un objet, seulement je ne sais pas d'Avance si c'Est un int une string, long....
    donc quand je le passe en paramèetre, j'aimerais simplement le déclarer comme objet et ensuite en faire ce que je veux

    en gros, lorsque j'appelle ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    faireOprration(monObjet)
    et dans ma déclaration ma fonction aurait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void faireOperation(type monObjet)
    comment je pourrais alors désigné que c'Est un objet???

  12. #12
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Si tu veux simplement faire des opérations différentes par type, tu n'as qu'à surcharger ta fonction pour chaque type donc tu as besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void faireOperation(int x);
    void faireOperation(float x);
    void faireOperation(maClasse x);
    ...
    Ou si tu veux être plus général, utiliser les templates (voir FAQ)

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

Discussions similaires

  1. programmation corba: le type "sequence"
    Par Kali dans le forum CORBA
    Réponses: 4
    Dernier message: 28/08/2005, 16h09
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. Réponses: 2
    Dernier message: 05/06/2002, 12h29
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36

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