Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
655 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Résolu]Passage d'un template non défini entièrement à une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]Passage d'un template non défini entièrement à une fonction

n°1799198
mifinoufou
Posté le 13-10-2008 à 11:08:18  profilanswer
 

Bonjour,
 
Désolé pour le titre peu évocateur mais je n'ai pas trouvé mieux. cela fait longtemps que je n'ai plus fait de C++ et mon langage n'est peut être pas très approprié.
 
Je veux utiliser la classe générique array de Boost. Pour instancier cette classe, il faut deux paramètres : le type d'objet contenu dans le tableau et le nombre d'éléments.
 
Une initialisation ressemble donc à cela :
 

Code :
  1. array<int,10> a = { { 1, 2, 3, 4, 5 } };


 
J'aimerais utiliser un objet array en paramètre d'une de mes fonctions. Le soucis est que le nombre d'éléments peut être variable. Je ne peux donc pas le préciser dans la signature de ma fonction.
 
Plus concrètement, ma fonction doit recevoir un tableau d'octet dont la taille est variable.
 
Voici la déclaration que je tente d'écrire :
 

Code :
  1. virtual int writeP12(const array<char,???> &p12) = 0;


 
Comment puis-je préciser que je désire un tableau de char mais sans taille déterminée ?
 
Merci d'avance pour vos réponses.


Message édité par mifinoufou le 13-10-2008 à 13:49:19
mood
Publicité
Posté le 13-10-2008 à 11:08:18  profilanswer
 

n°1799254
Amonchakai
Posté le 13-10-2008 à 11:31:12  profilanswer
 

Hello,  
 
   Pourquoi est ce que tu veux pas utiliser un std::vector ? Car ça règlerait ton problème...
 
   Les boost::array se sont des tableaux statiques, donc tu va toujours être obligé de spécifier sa taille. A moins de passer par des templates qui te permettra de repousser la définition de taille de tableau, mais dans ce cas la, ça marchera jamais avec ton héritage dynamique que tu veux mettre en place...
 
Donc conclusion : std::vector


Message édité par Amonchakai le 13-10-2008 à 11:32:20
n°1799334
mifinoufou
Posté le 13-10-2008 à 12:12:48  profilanswer
 

En fait, ce que je veux stocker c'est un fichier et j'ai besoin, lors d'appel à des couches basses, de récupérer un char *.
 
array de Boost me permettait d'encapsuler facilement ce fichier et de récupérer ensuite facilement mon char * lorsque j'en avais besoin.
 
Mais bon, la classe array est un peu lourde par rapport à l'utilisation que je veux en faire. Une simple classe (voire une structure) avec un membre char * et un autre la taille me suffit...
 
Merci pour ta réponse qui m'a fait réfléchir un peu ;-)

n°1799348
Amonchakai
Posté le 13-10-2008 à 12:32:52  profilanswer
 

hello,
 
    pour accéder au pointeur du peut le faire simplement avec std::vector :  
 

Code :
  1. std::vector<char> vect;
  2.     .....
  3.     char *ptr = &vect[0]

n°1799383
mifinoufou
Posté le 13-10-2008 à 13:48:52  profilanswer
 

Mais les "vector" ne peuvent pas se construire à partir d'un char * je crois.
 
Vous allez peut me poser la question suivante : "Pourquoi je veux stocker un char * dans un objet pour ensuite récupérer un char *" ?
 
En fait, je dois attaquer des couches basses à partir de Java en utilisant JNI pour faire appel à du code natif. Au niveau Java, j'utilise des byte[] pour stocker mes fichiers. Ensuite je les passe au C++ en passant grâce à JNI. Cependant, le byte[] Java devient une structure assez dépendante de Java donc je veux récupérer les données utiles dedans et les encapsuler dans un type C++ pour ensuite les passer à d'autres fonctions.
 
Je pense que je vais opter pour la solution dans laquelle je crée mon propre objet ou ma structure.
 
Merci pour vos réponses.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Résolu]Passage d'un template non défini entièrement à une fonction

 

Sujets relatifs
problème sur un templatePassage de PHP4 a PHP5 problème de condition
[résolu]boucle de classement selon valeur tableau[résolu] Espaces et preg_replace
Problème d'affichage d'un menu en CSS (résolu)[SQL] Erreur syntaxe [RESOLU]
Appeler lightbox dans une autre fonction javascript possible??[résolu] Problème de bitfields et d'alignement
Est-ce possible de créer des variables globales dans une fonction ? 
Plus de sujets relatifs à : [Résolu]Passage d'un template non défini entièrement à une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR