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 :

boost création multiarray classe


Sujet :

C++

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    j'ai réussi à changer les strcmp par les str.compare.
    merci !
    ça change quoi dans le fond ?

    (bon ça change pas le probleme que j'ai. mais si ça peut rendre le code plus propre c'est cool !)

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    pour le mode débug.
    j'avoue que j'aimerais beaucoup mais pour le moment je comprends pas du tout comment marche le mode debug sous dev c++....

  3. #23
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    En fait, dev-cpp est un problème en soit, parce que son compilateur est ancien (d'aucun dirait périmé), et n'est pas maintenu à jour.

    Je te recommande fortement de passer à une solution maintenue, telle que code::blocks ou Eclipse for C++, ou encore MS Visual C++ (express est la version gratuite).
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    ah oki.
    merci.
    c'est vrai que j'ai pris dev-c++ parce que c'est ce que j'avais utilisé en école d'ingénieur il y a ..... (mince chuis vieux ....)
    je vais essayer eclipse on m'en avait parlé.
    (enfin je vais surtout essayer de passer sur Qt sur linux bientot mais la on a des problemes avec nos stations de travaille ...).

    bon ba j'essayer de voir si j'arrive à debugger avec eclipse.
    parce que sur dev-cpp il fait les breakpoints dans le main, mais dans les fonctions appelés il me les déclare invalide.

  5. #25
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par svagrim Voir le message
    pour la classe image elle comprend de nombreux tableaux parce que je fais du traitement d'images multi-modale.
    en gros à la fin je me retrouve avec un volume d'image, à plusieurs temps, pris à des endroits un peu différent dans l'espace, avec une fois sur deux ou une fois sur trois une modalité d'imagerie différente, et une fois sur deux un état de l'échantillon différent (expiration, inspiration).
    Peut etre est-ce là, le réel problème...

    Il est possible que l'on n'ait pas la même notion de ce qu'est une image, mais, pour moi, une image n'est jamais... qu'une "vue" de quelque chose à un instant T donné.

    Que tu doive combiner plusieurs vues différentes afin de générer une vue "globale" correspondant à un instant T est tout à fait possible, mais, tu devrais faire en sorte que tu n'aies qu'à combiner les images, indépendamment de ce qu'elles peuvent représenter ou de l'endroit d'où elles sont issues.


    les tableaux servent à répertorier toutes les conditions d'imageries différentes et les variables qui entrent dans des équations pour calculer des phénomènes physiologique à partir de l'ensemble de ses images.
    les valeurs de certains de ses tableaux sont directement des variables de ses équations, d'autres servent à dire, cette équation va servir pour ces images, cette équation pour celles là etc ...
    l'image en cas d'inspiration tu va la pondérer avec telle fonction dépendant du temps si on souhaite utiliser ce modèle mathématique, avec telle autre si on souhaite utiliser un autre modèle mathématique.
    idème pour les images en cas d'expiration etc ....
    Ca, ce sont des données métier...

    C'est à dire que chaque image "de base" correspond à la vue d'un état particulier dans des conditions particulières à un instant T donné.

    Il faut que tu soies, effectivement, en mesure de générer la vue en question, mais, une fois qu'il s'agit de générer la vue "globale", les différents états et conditions n'ont plus à intervenir : tu dois avoir sélectionné "par ailleurs" les image à combiner, et laisser ton algorithme de combinaison faire le reste.
    je voudrais que la classe image me serve à avoir toutes ses données à disposition, pour après à partir d'autres fonctions dépendant notamment des modèles pharmaco-cinétique que je veux utiliser je puisse modifier mes images avec mes pondérations et lancer les calculs des paramètres physiologique.
    En fait, tu devrais avoir une classe "Image" qui correspond à ce que tu veux afficher (un ensemble de pixels qui s'affichent sur deux ou trois dimensions), et un algorithme par "donnée de base" qui converti la donnée de base en image.

    quand il s'agit, enfin, de combiner plusieurs images de base, tu sélectionnes les images de base qui t'intéressent et tu utilises un algorithme qui permette de les combiner "selon les besoins".

    Mais cela implique qu'il te manque sans doute quelque chose comme une classe et autant d'algorithme que tu n'as de tableaux dans ta classe images
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    merci koala pour ta réponse.

    alors pour moi les gens avec qui j'ai travaillé et je travaille en ce moment en traitement d'image jusqu'à maintenant) une image n'a pas tout à fait la même définition que toi. du coup j'avais peut être pas assez expliqué/défini ce que je voulais faire et je m'en excuse. ça ne m'étais pas passé par la tête qu'on aurait pas forcément la même définition la dessus.

    et par ailleurs pour en revenir à une de tes dernières remarques :
    une classe "Image" qui correspond à ce que tu veux afficher (un ensemble de pixels qui s'affichent sur deux ou trois dimensions)
    je n'ai aucunement l'intention d'afficher quoi que ce soit.

    ce que j'appelle image, tu l’appellerais peut être plus data du coup en fait si je me trompe pas.

    ma définition d'image est "une information acquise dans un état précis "temps, état de l'échantillon, etc ...". que ça soit une information sous forme d'une seule valeur, d'une matrice 2 ou 3D (ou plus parfois).

    et la ma classe me sert juste à répertorier les images (ou data) comme je souhaite pour appliquer mes algo de traitements
    mon algorithme va utiliser des données de chaque images de base et non un seul type.

  7. #27
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Bah, pour moi, une fois que l'on se met sur la définition du terme image, il n'y a pas de problème

    Mais ta définition me pousse quand meme à m'interroger
    1. J'ai bien conscience que toutes les données interviennent, à un moment ou à un autre, dans l'algorithme, mais, si l'on fait exception de ce fait:
    2. Y a-t-il la moindre relation qui puisse réunir l'ensemble des données
    3. Y a-t-il seulement le moindre moment de l'algorithme où tu aurais besoin de toutes les données en même temps
    4. Si ton algorithme a vraiment besoin de toutes ces informations, je te vois assez facilement partir sur un "code spagetti" de plusieurs centaines de lignes... Ne crois tu pas qu'il serait intéressant de factoriser cet algorithme
    (à vrai dire, il y a de fortes chances pour que si tu réponds non aux deux questions, la réponse à la troisième soit oui )

    je m'explique. Tu as (si j'ai bien compté ):
    1. 23 tableaux de chaines de caractères
    2. 20 tableaux de float
    3. 4 tableaux d'int
    4. 1 matrice d'int
    5. 2 matrices de float
    6. (je crois ne rien avoir oublié )

    Etant donné l'ordre dans lequel les différentes données sont déclarées, je ne serais pas étonné du tout si cela correspondait peu ou prou à 6 parties spécifiques de ton algorithme.

    Peut etre devrais tu trouver le moyen de faire en sorte de séparer correctement ces différentes parties, quitte à ce qu'une des partie fasse appel à une autre

    Je ne doute pas qu'il puisse, parfois, y avoir des communications entre ces différentes parties, mais si une des données doit passer de l'un à l'autre ben, le passage d'arguments lors de l'appel d'une fonction, ca sert à ca, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    back to my problem ....

    bon ca faisait longtemps que j'avais plus toucher a ce code ... conf plus redaction d'une publie oblige.

    donc voila je m'y remet.
    j'ai quitte dev-cpp comme vous m'aviez dit que c'etait obsolette.
    j'ai d'ailleurs fait passer mon pc principale sous ubuntu 12.04 car j'en avais mare de windows pour faire ce que je faisais dessus.
    je travaille maintenant donc sous ubuntu 12.04, windows seven (quand je bosse sur mon laptop) et suse enterprise (quand je bosse sur les workstations qu' on a finalement reussi a faire fonctionner comme on voulait).
    du coup je suis passe sur code::blocks. vous en pensez quoi c'est un bon soft pour faire du c++ ?
    on m'avait conseiller Qt creator mais j'ai pas reussi a l'installer sous suse du coup pour avoir 36 environnement different j'ai mis code::blocks.

    donc voici ou j'en suis :
    program main (a ma connaissance mes problemes ne viennent pas de la):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    #include <cstdlib>
    #include <iostream>
    #include <vector>
    #include <string>
    #include <sys/types.h>
    #include <dirent.h>
    #include <errno.h>
     
    #include "test_class.h"
     
    using namespace std;
     
    /*function getdir2*/
    int getdir2 (string dir, vector<string> &files)
    {
      DIR *dp;
      struct dirent *dirp;
      if((dp = opendir(dir.c_str())) == NULL)
      {
         cout << "Error(" << errno << ") opening " << dir << endl;
         return errno;
      }
     
      while ((dirp = readdir(dp)) != NULL)
      {
        files.push_back(string(dirp->d_name));
      }
     
      closedir(dp);
      return 0;
    }
    // end function getdir2
    ////////////////////////////////////////////////////////////////////////////////////
    // start function main
    int main(int argc, char *argv[])
    {
      vector<string> files = vector<string>();
      string input = "";
     
      cout << "Enter the path of the folder where there is only the projections :\n>";
      getline(cin, input);
     
      getdir2(input,files);
     
      Images myImages;
      myImages.reading(input, files);
      myImages.save_binaryFile();
      //cout << myImages.ttype;
      std::cin.get();
    }
    program test_class.h (pareil je pense pas que les problemes viennent de la)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #ifndef TEST_CLASS_H
    #define TEST_CLASS_H
     
    #include <vector>
    #include <string>
    #include <boost/multi_array.hpp>
     
    #define WANT_TRACE 1
     
    /*reading the vff files, header and images, and sort them in the variable ... */
     
    typedef boost::multi_array<float, 3> array_type;
    //typedef array_type::index index;
     
    class Images
    {
    public:
     
       Images();
       //function: read the vff files.
       void reading(std::string input, std::vector<std::string> &files);
       //function: save the final matrix
       void save_binaryFile();
       array_type data;
     
     
    private:
       std::vector<std::vector<int> > tsize;
     
    };
     
    #endif // TEST_CLASS_H
    et du coup le programm ou tout se passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
    #include <sys/types.h>
    #include <dirent.h>
    #include <errno.h>
    #include <vector>
    //#include <conio.h>
    #include <algorithm>
    #include <functional>
    #include <iterator>
     
    #include <boost/multi_array.hpp>
     
    #include "test_class.h"
    using namespace std;
     
    #define BYTETOBINARYPATTERN "%d%d%d%d%d%d%d%d"
    #define BYTETOBINARY(byte)  \
      (byte & 0x80 ? 1 : 0), \
      (byte & 0x40 ? 1 : 0), \
      (byte & 0x20 ? 1 : 0), \
      (byte & 0x10 ? 1 : 0), \
      (byte & 0x08 ? 1 : 0), \
      (byte & 0x04 ? 1 : 0), \
      (byte & 0x02 ? 1 : 0), \
      (byte & 0x01 ? 1 : 0)
     
    //constructor
    Images::Images():data(boost::extents[3][875][568])
    //Images::Images()
    {
    // Create a 3D array that is 1 x 1 x 1 to start
    //typedef boost::multi_array<double, 3> array_type;
    //typedef array_type::index index;
    //array_type A(boost::extents[3][875][568]);
    //A(boost::extents[3][875][568]);
    }
     
    //function reading
    void Images::reading(string input, vector<string> &files)
    {
     
     
    #if WANT_TRACE > 0
      cout << "files are: \"" << input << endl;
      for (vector<string>::iterator it = files.begin() ; it != files.end(); ++it)
        cout << *it << endl;
      cout << "\"" << endl;
    #endif
     
    // Create a 3D array
    //typedef boost::multi_array<double, 3> array_type;
    //typedef array_type::index index;
    //array_type data(boost::extents[3][875][568]);
    //data.resize(boost::extents[3][875][568]);
    int mat_i = 0;
     
      // check the directory is ok
      if (files.size() < 3) {
    	cout << "Directory is wrong or does not contain any file." << endl;
    	return;
      }
     
      for (vector<string>::iterator it = files.begin()+2 ; it != files.begin()+3; ++it)//files.end(); ++it)
      {
     
        /* Read projection file*/
    #if defined _WIN32 || defined _WIN64
        string sep = "\\";
    #else
        string sep = "/";
    #endif
     
        string file_to_open = input+sep+*it;
     
    #if WANT_TRACE > 0
        cout << "file is: \"" << file_to_open << "\"" << endl;
    #endif
     
        ifstream input_file;
        cout << file_to_open << endl;
        input_file.open (file_to_open.c_str(), ifstream::in);
        input_file.seekg(0,ios::beg);
     
        if(input_file == NULL)
        {
          cerr<<"Cannot open input file \n";
          return;
        }
     
        /* Read the header */
        string line;
     
        getline(input_file, line );
     
    #if WANT_TRACE > 0
        cout << "first line :" << endl << line << endl;
    #endif
     
        string test ("=");
        size_t found;
    	int n;
        int size_j = 0;
    	int size_k = 0;
     
        while ( getline(input_file, line ) )
        {
          found = line.find(test);
     
    //#if WANT_TRACE > 0
    //      cout << "found :" << int(found) << endl;
    //#endif
    	  if (found == string::npos)
    		break;
     
          string name_info;
          string info;
          name_info = line.substr(0,found);
          info = line.substr(found+1,(line.length()-found-2));
          stringstream info2(info);
          int val; float val2;
     
          if(name_info.compare("size") == 0)
          {
     
            stringstream info3(info);
            vector<int> vals;
     
            while(info3.good())
            {
              info3 >> val;
              vals.push_back(val);
     
            }
            tsize.push_back(vals);
            //delete &vals;
     
    //          cout << "taille info tableau" << tsize[0][0] << tsize[0][1] << endl;
     
            if (info2.good()) {
                info2 >> size_j;
                cout << "size1 " << size_j << endl;
                }
            if (info2.good()) {
                info2 >> size_k;
                cout << "size2 " << size_k << endl;
                }
          }
     
          else
          {
            cout << "Header line not processed" << endl;
          }
     
        }
     
     
        cout << "End of header" << endl;
        //cout << ttype.at(1) << endl;
     
        //datasize=prod(info.Dimensions)*(info.BitDepth/8);
        //fseek(vff_file_id,-datasize,'eof');
        //input_file.seekg(-trawsize[i],ios::end);
     
        //boost::array<array_type::index,3> dims = {{4, 3, 2}};
        //data.resize([2][2][2]);
     
     
        int length = size_j*size_k*2;
    	char *buffer = new char [length];
     
    	cout << "Reading " << length << " characters... " << endl;
     
    	input_file.seekg(-length,ios::end);
    	input_file.read(buffer,length);
     
    	if (input_file)
    		std::cout << "all characters read successfully." << endl;
    	else
    		std::cout << "error: only " << input_file.gcount() << " could be read" << endl;
     
    	int buffer_i = 0;
    	// Assign values to the elements
    	for(array_type::index k = 0; k < size_k; ++k) {
    	    for(array_type::index j = 0; j < size_j; ++j) {
     
    			char num1 = buffer[buffer_i];
    			buffer_i++;
    			char num2 = buffer[buffer_i];
    			buffer_i++;
     
    			int16_t number = 0;
    			number |= (unsigned char)num2;
    			number |= num1 << 8;
    			//int number = num2 + (num1 << 8);
    			//cout << "mat_i : " << mat_i << "j : " << j << "k : " << k << endl;
    			data[mat_i][j][k] = number;
    //			printf("%02x %02x %i\n", num1, num2, number);
    			printf (BYTETOBINARYPATTERN" "BYTETOBINARYPATTERN"\n", BYTETOBINARY(num1), BYTETOBINARY(num2)); //,number);
    //			cout << *(buffer+buffer_i) << " " << *(buffer+buffer_i+1) << endl;
     
    			//unsigned int number = num2 + (num1 << 8);
     
    		}
    		//cin.get();
    	}
        cout << "size data no elements: " << data.size() << "no bytes : " << sizeof(data) << endl;
    	delete[] buffer;
     
    	input_file.close();
    	cin.get();
    	mat_i++;
      }
     
    }
     
    void Images::save_binaryFile()
    {
      cout << "saving the images" << endl;
     
      //calculation of the size of one slice
      int length1 = tsize[0][0]*tsize[0][1]*2;
      cout << "length1 : " << length1 << endl;
      cout << "size_x : " << tsize[0][0] << " size_y : " << tsize[0][1] << endl;
      cout << "no of dimensions : " << data.num_dimensions() << "size dimensions : " << data.shape() << " size in no elements : " << data.num_elements() << endl;
      cout << "sizeof : " << sizeof(data) << endl;
      //tsize[2]*2;
     
      ofstream binaryFile ("test_image.raw", ios::out | ios::binary);
      binaryFile.write((char*)&data,length1);    //sizeof(data) instead of lenght1?
      binaryFile.close();
    }
    j'ai mis les programmes en quasi entier parce que plusieurs fois on m'a repproche de pas tout mettre et du coup de pas pouvoir tester le programme sur son pc mais comme vous pouvez le voir la plupart des lignes de codes c'est juste pour remplir mes matrices de donnees. du coup j'ai juste enlever les parties dont j'etais vraiment sur qu'elles n'ont aucun lien avec mon probleme.

    bon alors ce code semble "marcher" si je ne veux travailler qu'avec la taille de matrice 3 par 865 par 568 que j'ai choisi histoire de pas m'encombrer de toutes mes donnees juste pour faire des tests.
    mais je n'arrive jamais a la reshaper.
    par exemple quand je lis la taille de la matrice que je souhaite ouvrir (genre quand je definie size_j et size_k j'aimerais bien changer la taille avec les methodes de reshape de multi_array de boost mais pas moyen. il me fait les memes erreurs qu'avant.

    (au passage la fonction save ne marche pas ... sauriez vous comment faire l'equivalent sous matlab de data(i,:, avec les multi_array ? (c' est a dire choisir la premiere dimension et sauvegarder toute la matrice 2D pour cette slice la)

    sinon oui je suis en train de reflechier a separer plus. peut etre que mon probleme de reshape pourrait se resoudre comme ca ?

    Merci a vous.

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    meme si je separe mes differentes parties il faut que j'arrive a modifier ma taille de ma multi_array.
    c'est quand meme pour les fonctions de la multi_array que je me suis embeter a en creer une ...

    et pour le moment je ne comprend pas...
    rien ne marche ...

    j'arrive a cree ma matrice dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Images::Images():data(boost::extents[220][875][568]) {}
    mais j'arrive pas a modifier la taille dans le code apres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data(boost::extents[3][875][568]);
    ca devrait marcher pourtant nan ?

    comment on fait pour appeler la fonction extents quand la multi_array fait parti d'une classe ?

  10. #30
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    dans le constructeur, il y a construction de l'objet.

    dans la seconde ligne, tu appelles la fonction operator() de data, avec en argument un boost::extents
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. [RMI] problème Création *_stub.class et *_skel.class
    Par philobedo dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 29/05/2006, 20h03
  2. Contrôler l'ordre de création de classes globales
    Par 10_GOTO_10 dans le forum C++
    Réponses: 4
    Dernier message: 24/04/2006, 20h39
  3. Création de classe exception
    Par HNT dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/01/2006, 15h53
  4. Création de classes à la volée...
    Par ouiffi dans le forum Langage
    Réponses: 8
    Dernier message: 16/12/2005, 18h01

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