Warning C4018 und C4100 bei Vektoren
-
Hi Leute!
Ich bin schon öfters über die folgenden Meldungen bei der Verwendung von STL Vektoren mit VC++ 6 gestoßen:C:\ARBEIT\VC98\INCLUDE\vector(156) : warning C4018: '<' : Konflikt zwischen signed und unsigned
D:\ARBEIT\VC98\INCLUDE\vector(156) : Bei der Kompilierung der Member-Funktion 'void __thiscall std::vector<unsigned int,class std::allocator<unsigned int> >::insert(unsigned int *,unsigned int,const unsigned int &)' der Klassenvorlage
D:\ARBEIT\VC98\INCLUDE\vector(167) : warning C4018: '<' : Konflikt zwischen signed und unsigned
D:\ARBEIT\VC98\INCLUDE\vector(156) : Bei der Kompilierung der Member-Funktion 'void __thiscall std::vector<unsigned int,class std::allocator<unsigned int> >::insert(unsigned int *,unsigned int,const unsigned int &)' der Klassenvorlage
D:\ARBEIT\VC98\INCLUDE\xmemory(37) : warning C4100: '_P' : Unreferenzierter formaler Parameter
D:\ARBEIT\VC98\INCLUDE\xmemory(68) : Siehe Verweis auf Instantiierung der kompilierten Funktionsvorlage 'void __cdecl std::_Destroy(unsigned int *)'Das Programm kompiliert sauber, aber die Warnungen sind doch irgendwie Merkwürdig. Die Definition der Vektoren sieht im aktuellen Programm so aus:
std::vector<char> fieldsX; std::vector<char> fieldsY;
Und das ist meiner Meinung nach sauberer Code...
-
#include <vector> using namespace std; int main() { vector<char> fieldsX; vector<char> fieldsY; return 0; }
oder
#include <vector> int main() { std::vector<char> fieldsX; std::vector<char> fieldsY; return 0; }
-
Was will der Künstler uns sagen?
Ich habe die beiden Vektoren als Membervariablen einer Klasse definiert.
-
Hat keiner einen Vorschlag? Ich habe den letzen Post wirklich nicht verstanden...
-
Wie wäre es mal wenn du die richtigen Stellen zeigst? Zum Beispiel da wo du insert benutzt.
-
Ich benutze push_back() und das nur an einer Stelle
void MovableFields::AddField(char x, char y, bool mayMove) { if(x >= 0 && x < 8 && y >= 0 && y < 8) if(mayMove == true) { fieldsX.push_back(x); fieldsY.push_back(y); } }
-
Also ich bekomme hierbei keine Fehler. (Visual C++ 6)
#include <vector> int main() { std::vector<char> fieldsX; char x = 'A'; fieldsX.push_back(x); return 0; }
Und du?
-
Vielleicht liegt es daran, dass die Vektoren Membervariablen der Klasse sind. Ich brauch das aber unbedingt...
-
Als Membervariablen kommt auch kein Fehler/Warnung.
#include <vector> class Bla { public: void move(char x) { fieldsX.push_back(x); } private: std::vector<char> fieldsX; }; int main() { Bla bla; bla.move('X'); return 0; }
Mach einfach so ein kleines Testprogramm wie ich das das Verhalten aufzeigt.