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 :

Utilisation de memset


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut Utilisation de memset
    Bonjour à tous,

    Je suis en train de faire une librairie de gestion de données. Parmis mes classes, on retrouve des "Properties" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    template<class T>
    class CProperty
    {
    public :
    // Set/Get/AddListener/RemoveListener/FromString/ToString
    private:
       T m_tValue;
    };
    Les propriétés sont chargées depuis une base de données via la méthode FromString(valeur en base).

    Mais un problème se pose. Dans mon FromString, je crée un T, puis j'injecte la valeur en chaîne de caractères dedans avant de positionner le résultat. Or, si la chaîne est vide (vide en base ou à null), je me retrouve à positionner un T qui n'a pas été initialisé. En gros ça fait ça (par exemple pour un int)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int i;
    SetValue(i);
    Et donc ma valeur est à -899898765 des trucs comme ça.

    Donc je me suis dit que je vais faire un memset sur mon T en guise d'initialisation. Seulement voilà, j'ai entre autre des clients à gérer, le nombre nominal est de 5000 et chaque client possède plus de 100 propriétés. Est-ce que rajouter un memset au niveau de la propriété va baisser beaucoup les performances ?

    Sinon je peux faire au niveau de la donnée. Mais celle-ci héritant de plusieurs classe avec des méthodes virtuelles, est-ce que un memset là dessus ne va pas me bousiller ma vtable ?


    Merci beaucoup,

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Membre averti Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Points : 323
    Points
    323
    Par défaut
    Bonjour,
    Dis moi si j'ai mal compris ton problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T i; //d'abord tu déclare une variable de type inconnue
    //ensuite tu attribut, ou pas, une valeur a cette variable
    SetValue(i); //Et enfin tu passe cette variable a une fonction
    Ne serait t'il pas possible de forcer l'utilisation du constructeur par défaut? comme ceci:
    Ainsi tout les int, float et autre serait toujours a zéro.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Ha bah oui, j'suis bête...

    Merci du coup
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/04/2010, 16h06
  2. Utilisation de memset()
    Par Kr00pS dans le forum C
    Réponses: 15
    Dernier message: 15/03/2007, 23h13
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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