BOOL / bool
-
sry - hab ich die frage wohl vergessen mit hinzuschreiben... xD
ich habe bool genommen - das "normale"... ^^
und bekomme jetzt warnungen obwohl ich nur den ganz normalen datentyp bool verwende - das bsp steht ja auch im eröffnungspost:
es kommt eine warnung obwohl ich nur mit bool arbeite - als ob er irgendwo ein int aus einem bool macht... ich habe jz die vermutung, dass es an dem include liegt - aber kein plan -.-bb
-
weiss zwar nicht obs was bringt, is auch mySQL aber guck mal: http://bugs.mysql.com/bug.php?id=26461
-
nein - wie gesagt, es steht als typedef in der windef.h
ich hab jz einfach mal so was daraus gemacht:
#ifndef __cplusplus typedef int BOOL; #else typedef bool BOOL; #endif //#ifndef __cplusplusaber 5 Zeilen weiter steht dann noch so was:
typedef BOOL near *PBOOL; //versteh ich nicht ^^ typedef BOOL far *LPBOOL;//das auch nicht...hoffe, ich hab das damit nicht "kaputt gemacht"

aber kein plan - ich schreib auch sehr ungern in anderen dateien rum, die ich mit meinem wissen noch lang nicht verstehe und die wahrscheinlich auch gar nicht dafür gedacht sind, drin rumzuschreiben ;o)
-
Lass die Finger von den WinAPI Headern! In Deinem eigenen Code verwende bool. Wenn du in kontakt mit der WinAPI kommst, dann caste dementsprechend.
greetz, Swordfish
-
BOOL nach bool konvertieren:
BOOL b1 = TRUE; bool b2 = b1 != FALSE;
-
"In Deinem eigenen Code verwende bool"
das tue ich"Wenn du in kontakt mit der WinAPI kommst, dann caste dementsprechend."
ich komm zwar in kontakt damit aber muss nirgendwo BOOL nutzen und tu das auch nicht - es ist eben bool - und es wird ein bool erwartet...wie bereits in dem bsp beschrieben...
hier noch mal der genaue sachverhalt:class c1 { public: static bool m_boolean (true); } class c2 { public: void GetABoolean (bool v); bool SendABoolean (void); }; #include <....> //unter anderem "windef.h" void c2::GetABoolean (bool v) //ok { ; } void otherfkt (void) { GetABoolean (c1::m_boolean); //WARNING } bool c2::SendABoolean (void) //NICHT ok -> falscher rückgabetyp... -.- { return true; }lol... jz hab ichs aber doch wieder rausgenommen und auf einmal gehts -.- haltet mich ruhig für doof - ich saß heut > 2 Stunden daran - hab alles 5 mal umbenannt etc bevor ich mich dazu entschieden hatte, doch in den winapi-headern rumzukritzeln - also an rechtschreibfehlern lag es nicht - aber is mir jz auch egal ^^ es funtzt wieder xD
-
also ich würd die winapi header auf keinen fall ändern
das mag vllt jetzt für dich funktionieren aber später hast du irgendwelche probleme mit opensource den du bei dir anschauen willst oder wenn du mit anderen leuten an einem projekt arbeitest und sich eure header unterscheiden
wenn du die alten winapi funktionen und prozeduren die BOOL verwenden mit deinem bool code mixt benutz einfach sowas
//warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) #pragma warning(disable:4800) bool isHighResolutionPerformanceCounterAviable = QueryPerformanceFrequency((LARGE_INTEGER*)&frequency); #pragma warning(default:4800)das warning ist nicht weiter tragisch, und das ist jedenfalls ne bessere lösung als in den windows headern rumzupfuschen
-
müsste das nicht
GetABoolean (c1::m_boolean**()**);
heissen ?
-
Hmm, kommt drauf an, was da machen will. Das true dort drinn ergibt für mich keinen Sinn. Vlt. will er sie auch nur initialisieren. Sollte aber Initialisierungsliste nutzen.
-
is ne statische member - und die sollte so initialisiert werden...
außerdem ist das eigtl alles nur nen bsp - so ne klassen hab ich nicht wirklich xD
-
sry für doppelpost, aber nachdem ich heut wieder bissl gecodet habe (und gestern die paar zeilen wieder rausgenommen habe hier noch mal der genaue sachverhalt):
struct Tblock { private: const Tcoord m_size; const std::string m_name; const Nblock::ID m_blockid; const bool m_u18; const bool m_orientation; const std::string m_remark; std::string m_text[3][4]; public: std::vector <Tseat *> m_seats; std::vector <Tseperator *> m_seps; Tblock (const std::string &_name, Nblock::ID _blockid, Ncoord::ROW_AND_COL_VAR _cols, Ncoord::ROW_AND_COL_VAR _rows, bool _u18, bool _orientation, const std::string (& _text)[4][3]); ~Tblock (void); Nblock::ID GetID (void) const {return m_blockid;}; std::string GetName (void) const {return m_name;}; std::string GetRemark (void) const {if (m_remark.empty ()) return "0"; else return m_remark;}; Ncoord::ROW_AND_COL_VAR GetCols (void) const {return m_size.GetCol ();}; Ncoord::ROW_AND_COL_VAR GetRows (void) const {return m_size.GetRow ();}; bool IsU18 (void) const {return m_u18;}; bool GetOrientation (void) const {return m_orientation;}; void AddSeat (const Ncoord::ROW_AND_COL_VAR &col, const Ncoord::ROW_AND_COL_VAR &row, const Nseat::STATUS_VAR &status, const Nclient::ID &uid); void AddSeperator (const bool orientation, const Ncoord::ROW_AND_COL_VAR &_where, const Nseperator::SIZE_VAR &size); std::string KommaTexts (void) const; };#include //windowszeugs /*...*/ Nsitzplan::Tblock::Tblock (const std::string &_name, Nblock::ID _blockid, Ncoord::ROW_AND_COL_VAR _cols, Ncoord::ROW_AND_COL_VAR _rows, bool u18, bool _orientation, const std::string &_remark, const std::string (& _text)[3][4]) : m_blockid (_blockid), m_size (_cols, _rows), m_name (_name), m_u18 (u18), m_orientation (_orientation), m_remark (_remark) { m_text[0][0] = _text[0][0]; m_text[0][1] = _text[0][1]; m_text[0][2] = _text[0][2]; m_text[0][3] = _text[0][3]; m_text[1][0] = _text[1][0]; m_text[1][1] = _text[1][1]; m_text[1][2] = _text[1][2]; m_text[1][3] = _text[1][3]; m_text[2][0] = _text[2][0]; m_text[2][1] = _text[2][1]; m_text[2][2] = _text[2][2]; m_text[2][3] = _text[2][3]; }; /*...*/:\c\dahlia\konsole\dahlia_konsole_new\data\sitzplan.cpp(22) : error C2511: 'Nsitzplan::Tblock::Tblock(const std::string &,Nsitzplan::Nblock::ID,Nsitzplan::Ncoord::ROW_AND_COL_VAR,Nsitzplan::Ncoord::ROW_AND_COL_VAR,BOOL,BOOL,const std::string &,const std::string (&)[3][4])': Überladene Memberfunktion nicht in 'Nsitzplan::Tblock' gefunden f:\c\dahlia\konsole\dahlia_konsole_new\data\sitzplan.hpp(81): Siehe Deklaration von 'Nsitzplan::Tblock'Er denkt, dass die Member vom Typ BOOL (also int) sind - und hat jz nen problem damit, dass er die überladung nicht kennt... wie bekomm ich das jz sauber hin ohne wieder in der 'windef.h' rumkritzeln zu müssen?
Und seit wann gilt "BOOL" == "bool"?
Dachte immer, dass ALLES casesenitiv ist - selbst defines...Danke...
-
Ja, das passiert, wenn man so spät erst Code zeigt und meint, den Fehler selbst schon lokalisiert zu haben. Zwei Seiten Thread für Nüsse.
Der Fehler liegt schlicht und ergreifend darin, dass die Deklaration und die Definition vom Konstruktor unterschiedlich sind:
Tblock (const std::string &_name, Nblock::ID _blockid, Ncoord::ROW_AND_COL_VAR _cols, Ncoord::ROW_AND_COL_VAR _rows, bool _u18, bool _orientation, const std::string (& _text)[4][3]) Nsitzplan::Tblock::Tblock (const std::string &_name, Nblock::ID _blockid, Ncoord::ROW_AND_COL_VAR _cols, Ncoord::ROW_AND_COL_VAR _rows, bool u18, bool _orientation, const std::string &_remark, const std::string (& _text)[3][4])
-
huch : (
Den einen Fehler hatte ich danach erst noch reingemacht - nur die [3][4] und [4][3] hatte ich ein wenig übersehen xD
Danke
