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

SL & STL C++ Discussion :

vector<unsigned char> et unsigned char* : conversion ?


Sujet :

SL & STL C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut vector<unsigned char> et unsigned char* : conversion ?
    Bonjour à tous,

    Suite au conseil que l'on m'a donné lors d'un précédent post, au lieu d'utiliser un unsigned char*, j'ai utilisé un vector<unsigned char> pour stocker des données récupérée dans un fichier 3DS. Le truc, c'est que j'utilise OpenGL et GLUT et que certaines fonctions attendent un pointeur sur mes données.

    Je n'arrive pas à lui passer mon vecteur en tant que unsigned char* et je ne vois pas comment faire.
    Une derniere precision, mon vecteur se situe dans une classe et mon passage de parametre dans la fonction se situe dans une des méthode de la classe.

    Donc grosso modo ça donne un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class maclasse
    {
    vector<unsigned char> tablo;
     
    maclasse::test()
    {
    glBuild2DMipmaps(....., le fameux parametre en question);
    }
    }
    Sauriez vous comment je dois proceder svp ?
    Merci d'avance
    @++

  2. #2
    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

  3. #3
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    Il manque un point-virgule à la fin de ta classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Classe Toto
    {
    //
    };

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Merci Fiquet,

    Avant de faire une annerie, je voulais juste te soumettre le code que je pense utiliser pour voir si c'est bon ou pas ?

    J'ai ceci :
    - un vecteur vector<unsigned char> tableau deja rempli.
    - je connais donc sa taille.
    - je dois le retranscrire en unsigned char * toto

    Donc en gros, d'apres ce que j'ai pu comprendre sur la FAQ (j'aime pas les pointeurs ^^)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    unsigned char* toto;
    std::copy(&tableau, tableau.size(), toto);
    Ca te parait correct ?
    Sinon autre question, le fait de passer &tableau en parametre au lieu de recopier le vecteur dans le tableau toto, ca ne fonctionnerai pas ?

    Reggae, merci pour la remarque ^^ ne t'inquietes pas, c'etait juste l'erreur dans l'exemple mais dans mon code il y est bien

    @ bientot et merci d'avance

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    kaboum.
    Tu ne réserves pas d'espace mémoire (et tu ne libères rien non plus) pour la recopie.

    Pourquoi tu n'utilises pas &tableau[0] ?
    C'est l'approche idiomatique si:
    - le vecteur n'est pas modifié (dans un autre thread p.ex.) le temps de l'appel de la fonction C, (et autres problèmes similaires d'appel à une fonction non blocante)
    - la fonction C ne tente pas de réallocation/libération de la mémoire
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Relis donc la question de la FAQ qui t'a été citée, on n'y trouve absolument pas le code que tu proposes

Discussions similaires

  1. Convertir un UNSIGNED INT en deux UNSIGNED CHAR
    Par petitnul12 dans le forum C
    Réponses: 36
    Dernier message: 03/04/2013, 22h09
  2. Réponses: 6
    Dernier message: 11/02/2011, 09h51
  3. Différence entre char &r='c' et char r='c'
    Par deubelte dans le forum C++
    Réponses: 49
    Dernier message: 09/03/2010, 17h50
  4. const char et const unsigned char
    Par moon93 dans le forum C
    Réponses: 8
    Dernier message: 04/08/2006, 15h59
  5. Réponses: 6
    Dernier message: 24/03/2003, 17h11

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