Obtenir un tas d'erreurs et ils sont très cryptiques.Erreur dans la liste C++ :: tri
est ici tout le code correspondant:
// list::sort
#include <iostream>
#include <list>
#include <string>
#include <cctype>
#include "main.h"
using namespace std;
struct texture
{
int texture;
int ref;
};
bool compare_nocase (texture first, texture second)
{
if(first.texture < second.texture)
{
return true;
}
else
{
return false;
}
}
int main()
{
list<texture> mylist;
list<texture>::iterator it;
texture moose;
moose.ref = 3;
moose.texture = 6;
texture moose2;
moose2.ref = 1;
moose2.texture = 3;
texture moose3;
moose3.ref = 2;
moose3.texture = 14;
mylist.push_back (moose);
mylist.push_back (moose2);
mylist.push_back (moose3);
cout << "before sort mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
cout << it->texture << endl;
cout << endl;
mylist.sort(compare_nocase);
cout << "after sort mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
cout << it->texture << endl;
cout << endl;
return 0;
}
Je suis juste tester la fonction de tri STL mais je reçois les erreurs:
c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(12): error C2380: type(s) preceding 'texture' (constructor with return type, or illegal redefinition of current class-name?)
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(18): error C2274: 'function-style cast' : illegal as right side of '.' operator
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(18): error C2274: 'function-style cast' : illegal as right side of '.' operator
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(35): error C2274: 'function-style cast' : illegal as right side of '.' operator
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(39): error C2274: 'function-style cast' : illegal as right side of '.' operator
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(43): error C2274: 'function-style cast' : illegal as right side of '.' operator
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(51): error C2273: 'function-style cast' : illegal as right side of '->' operator
1>c:\users\spaniel\documents\visual studio 2010\projects\list\list\main.cpp(59): error C2273: 'function-style cast' : illegal as right side of '->' operator
Dieu, je suis un idiot. Je vous remercie! – Juiceyboxers
Oui, gcc est vraiment OK avec ça et je ne vois pas de raison, c'est faux:? –
Il y a une bonne raison pour que ce soit faux. Cela rend les références à 'texture' à l'intérieur des fonctions membres de la structure hautement ambiguës et confuses. Ceci est particulièrement un problème si n'importe quel type 'texture' définit' operator() '. Ensuite, vous ne pouvez même pas dire si vous essayez de construire une nouvelle 'texture' ou d'utiliser l'opérateur d'appel de fonction sur le membre' texture'. – Omnifarious