Bonsoir,
J'ai écris un programme en C++ sur Visual Studio C++ Express 2010. Lors de la génération, ça m'affiche les erreurs suivantes:
error C2678: '==' binaire*: aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'existe pas de conversion acceptable)
i:\program files\microsoft visual studio 10.0\vc\include\exception(470): peut être 'bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)'
i:\program files\microsoft visual studio 10.0\vc\include\exception(475): ou 'bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)'
i:\program files\microsoft visual studio 10.0\vc\include\exception(481): ou 'bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)'
i:\program files\microsoft visual studio 10.0\vc\include\system_error(408): ou 'bool std::operator ==(const std::error_code &,const std::error_condition &)'
i:\program files\microsoft visual studio 10.0\vc\include\system_error(416): ou 'bool std::operator ==(const std::error_condition &,const std::error_code &)'
lors de la tentative de mise en correspondance de la liste des arguments '(std::string, std::string)'
Voici le code de la classe textures.cpp:
L'erreur se produit au niveau cette ligne:
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 #include <fstream> #include <GL/glu.h> #include "..\Headers\templates.h" #include "..\Headers\textures.h" using namespace std; CTextures::CTextures(){ // Constructeur d'un ensemble de textures this->textures=new unsigned int[100]; // 100 textures au maximum glGenTextures(100, textures); this->Charger(); } CTextures::~CTextures(){ glDeleteTextures(nbTextures, textures); delete [] textures; delete [] texturesParDossier; } GLuint CTextures::Texture(char* dossier, const num){ string dos(dossier); bool arret=false; int numDossier=0; while(!arret&&numDossier<nbDossiers){ string nomDos(nomDossier[numDossier]); if(dos==nomDos){ numDossier-=1; arret=true; } numDossier+=1; } int nbText=0; for (int i=0; i<numDossier; i++){ nbText+=texturesParDossier[i]; } return textures[nbText+num]; }
if(dos==nomDos)
Error:aucun opérateur "==" ne correspond à ces opérandes
Voici le code source de la classe textures.h:
J'ai essayé de résoudre ce problème lors de la compilation, mais je ne me suis pas parvenu. J'attends vos réponses. Merci de votre aide.
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 class CTextures : public CSingleton<CTextures>{ friend class CSingleton<CTextures>; private: int nbDossiers; // Nombre de dossier de texture char nomDossier[10][10]; // Noms des dossiers int* texturesParDossier; // Nombre de textures par dossier int nbTextures; // Nombre total de textures unsigned int* textures; CTextures(); ~CTextures(); public: unsigned int Texture( char*, int); private: void Charger(); void ChargerTGA(const char*, unsigned int*); };
Partager