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:
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];
}
L'erreur se produit au niveau cette ligne:
if(dos==nomDos)

Error:aucun opérateur "==" ne correspond à ces opérandes

Voici le code source de la classe textures.h:
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*);                              
};
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.