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

  FORUM HardWare.fr
  Programmation
  C++

  VS- -> VS2005 ou 2008

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VS- -> VS2005 ou 2008

n°1800388
pdufranc
Posté le 15-10-2008 à 11:59:08  profilanswer
 

J'ai une erreur a la compilation sous 2005 et 2008 avec :
 
m_XAxis.erase (&m_XAxis[nAxis]);
 
ou  
 std::vector <CXGraphAxis>  m_XAxis;
 
l'erreur est :
 
error C2664: 'std::_Vector_iterator<_Ty,_Alloc> std::vector<_Ty>::erase(std::_Vector_iterator<_Ty,_Alloc> )' : impossible de convertir le paramètre 1 de 'CXGraphAxis *' en 'std::_Vector_iterator<_Ty,_Alloc>'
1>        with
1>        [
1>            _Ty=CXGraphAxis,
1>            _Alloc=std::allocator<CXGraphAxis>
1>        ]
1>        Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
 
Quelqu'un peut m'aider merci d'avance

mood
Publicité
Posté le 15-10-2008 à 11:59:08  profilanswer
 

n°1800403
theShockWa​ve
I work at a firm named Koslow
Posté le 15-10-2008 à 12:10:40  profilanswer
 

il a raison, la fonction attend un itérateur, pas un pointeur vers un élément
 
Edit : sur un vecteur, tu peux faire :
 

Code :
  1. m_XAxis.erase( m_XAxis.begin() + nAxis );


 
Edit2 : Vu que tu n'as pas l'air entièrement à l'aise avec la STL, j'en profite pour rappeler que, si tu fais souvent des suppressions d'éléments en milieu de conteneur, le vecteur n'est pas nécessairement un bon choix. Enfin, à toi de voir en fonction de ton contexte :)


Message édité par theShockWave le 15-10-2008 à 12:13:40
n°1800411
tibur
Posté le 15-10-2008 à 12:17:27  profilanswer
 

Hello,
On ne peut pas faire un erase sur un element, il faut le faire sur un iterator. Exemple :
 

Code :
  1. #include <vector>
  2. #include <iostream>
  3. #include <iterator>
  4. using namespace std;
  5. int main(int argc, char ** argv){
  6.   vector<char> v;
  7.   // On ajoute quelques elements
  8.   v.push_back('a');
  9.   v.push_back('b');
  10.   v.push_back('c');
  11.   v.push_back('d');
  12.   // On affiche le tableau
  13.   copy(v.begin(),v.end(),ostream_iterator<char>(cout << "avant : " ));
  14.   cout << endl;
  15.   // On supprime le 3em element
  16.   v.erase(v.begin()+2);
  17.   // On affichae le tableau
  18.   copy(v.begin(),v.end(),ostream_iterator<char>(cout << "apres : " ));
  19.   cout << endl;
  20.   return 0;
  21. }


n°1800413
pdufranc
Posté le 15-10-2008 à 12:17:55  profilanswer
 

Merci pour l'aide


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

  VS- -> VS2005 ou 2008

 

Sujets relatifs
Visual C++ 2008 Express : Ergonomie[résolu] visual c++ 2008 équivalent de l'app.path [résolu]
[VS] partager un fichier de class ds plusieurs projets d'une solutionProbleme dans mon application sous vb 2008
Visual studio 2008 et fichiers manifestVStudio 2008 [Erreur lors de la génération dynamique de 'rc.exe']
[BAC 2008] Acces possible de faire ca ?!? Je passe Demain :serreur de link avec le passage a visual 2008
GUI avec visual strudio express 2008 en c/c++Conversion VB6 vers VB 2008 : pb avec mscomctl.ocx
Plus de sujets relatifs à : VS- -> VS2005 ou 2008


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)