BOOL zu bool casten
-
Ach ja, wenn ich nicht qualifiziere kommt das:
**
1>e:\projekte\d3d\d3d\last\graphics\text.cpp(95) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>e:\projekte\d3d\d3d\last\graphics\text.cpp(95) : error C2143: Syntaxfehler: Es fehlt ',' vor '&'
1>e:\projekte\d3d\d3d\last\graphics\text.cpp(96) : error C2511: 'void Last::Graphics::Text::SetColor(const int)': Überladene Memberfunktion nicht in 'Last::Graphics::Text' gefunden
1> e:\projekte\d3d\d3d\last\graphics\text.h(23): Siehe Deklaration von 'Last::Graphics::Text'**
-
zeig doch mal den kompletten header plus .cpp - zur not ohne den inhalt der Funktionsrümpfe
-
BOOL grosserBool = TRUE; bool kleinerBool = grosserBool != FALSE;
-
Header:
#ifndef TEXT_H #define TEXT_H #include "../Abstract/VolatileResource.h" #include <D3dx9core.h> // Requires D3dx9.lib #include <map> #include <string> namespace Last { namespace Graphics { class GraphicDevice; } } namespace Last { namespace Graphics { class Text : public Last::Abstract::VolatileResource { public: // Find color codes at // http://www.6webmaster.com/homepagetools/farbcodes.php enum Color { Black = D3DCOLOR_XRGB(0,0,0), Grey = D3DCOLOR_XRGB(0x46,0x46,0x46), DarkRed = D3DCOLOR_XRGB(0x99,0,0), Red = D3DCOLOR_XRGB(0xFF,0,0), DarkGreen = D3DCOLOR_XRGB(0,0x99,0), Green = D3DCOLOR_XRGB(0,0xFF,0), Orange = D3DCOLOR_XRGB(0xFF,0x99,0), Yellow = D3DCOLOR_XRGB(0xFF,0xFF,0), Pink = D3DCOLOR_XRGB(0xFF,0,0xCC), DarkBlue = D3DCOLOR_XRGB(0,0,0x99), Blue = D3DCOLOR_XRGB(0,0,0xFF), White = D3DCOLOR_XRGB(0xFF,0xFF,0xFF)}; Text(Last::Graphics::GraphicDevice &GraphicDevice, const std::string &text = "", const std::string &font = "Times New Roman"); ~Text(); void Draw(); void SetPosition(int x, int y, bool draw = true); void SetText(const std::string &text); void SetColor(const Last::Graphics::Text::Color &color); /* { this->color = color; } */ void SetColor(int red, int green, int blue); const D3DCOLOR& Color() const; void OnDeviceLost(); void OnDeviceReset(); private: [...] D3DCOLOR color; }; } } #endifCode:
#include "Text.h" #include "GraphicDevice.h" namespace Last { namespace Graphics { Text::Text(Last::Graphics::GraphicDevice &GraphicDevice, const std::string &text, const std::string &font) : Last::Abstract::VolatileResource(GraphicDevice) { } Text::~Text() { } void Text::Draw() { } void Text::SetPosition(int x, int y, bool draw) { } void Text::SetText(const std::string &text) { } // Die besagte Methode void Text::SetColor(const Color &color) { this->color = color; } void Text::SetColor(int red, int green, int blue) { } const D3DCOLOR& Text::Color() const { } void Text::OnDeviceLost() { } void Text::OnDeviceReset() { } } }Ich hab die unnötigen Implementierungen weggelassen, sonst wärs wohl zuviel Text. Kann es sein das die Enumeration Color sich mit irgendeinem Color-Typ von DirectX beisst?
-
enum Color { Black = D3DCOLOR_XRGB(0,0,0), Grey = D3DCOLOR_XRGB(0x46,0x46,0x46), DarkRed = D3DCOLOR_XRGB(0x99,0,0), Red = D3DCOLOR_XRGB(0xFF,0,0), DarkGreen = D3DCOLOR_XRGB(0,0x99,0), Green = D3DCOLOR_XRGB(0,0xFF,0), Orange = D3DCOLOR_XRGB(0xFF,0x99,0), Yellow = D3DCOLOR_XRGB(0xFF,0xFF,0), Pink = D3DCOLOR_XRGB(0xFF,0,0xCC), DarkBlue = D3DCOLOR_XRGB(0,0,0x99), Blue = D3DCOLOR_XRGB(0,0,0xFF), White = D3DCOLOR_XRGB(0xFF,0xFF,0xFF)}; ... const D3DCOLOR& Color() const;fällt dir etwas auf?
==>void Text::SetColor(const enum Color &color)
-
bool erg() { BOOL erg = TRUE; return (erg) ? true : false; }
-
camper schrieb:
enum Color { Black = D3DCOLOR_XRGB(0,0,0), Grey = D3DCOLOR_XRGB(0x46,0x46,0x46), DarkRed = D3DCOLOR_XRGB(0x99,0,0), Red = D3DCOLOR_XRGB(0xFF,0,0), DarkGreen = D3DCOLOR_XRGB(0,0x99,0), Green = D3DCOLOR_XRGB(0,0xFF,0), Orange = D3DCOLOR_XRGB(0xFF,0x99,0), Yellow = D3DCOLOR_XRGB(0xFF,0xFF,0), Pink = D3DCOLOR_XRGB(0xFF,0,0xCC), DarkBlue = D3DCOLOR_XRGB(0,0,0x99), Blue = D3DCOLOR_XRGB(0,0,0xFF), White = D3DCOLOR_XRGB(0xFF,0xFF,0xFF)}; ... const D3DCOLOR& Color() const;fällt dir etwas auf?
==>void Text::SetColor(const enum Color &color)Wieso sieht der Compiler die Color() als Parameter?
-
pazoA schrieb:
Wieso sieht der Compiler die Color() als Parameter?
Normalerweise darf ein Name innerhalb derselben deklarativen Region (hier: die Klasse Text) nur einmal verwendet werden. Davon gibt es zwei Ausnahmen:
1. mehrere Funktionen, deren Parameterlisten sich unterscheiden, dürfen den gleichen Namen tragen = Funktionsüberladung
2. Eine Klasse bzw. ein Aufzählungstyp kann mit einem Objekt, einer Funktion oder einer Aufzählungskonstante gleichen Namens koexistieren - in diesem Falle wird die Klasse bzw. der Aufzählungstyp verdeckt und man muss jeweils struct/class/union/enum vor dem Namen schreiben, um sich auf die Klasse bzw. den Aufzählungstypen zu beziehen.Der Grund für diese Regel ist in der angestrebten Kompatibilität zu C zu suchen (dort ist das ebenfalls möglich, da in C die Tagnamen in einem anderen Namensraum liegen - aus dem gleichen Grunde werden solche Typen in C für gewöhnlich mit typedef deklariert).
Wäre der Aufzählungstyp nicht verdeckt, käme es zu Mehrdeutigkeiten:
void Text::Foo() { Color(); // Funktionsaufruf oder Konstruktion eines temporären Aufzählungsobjekts? }
-
#define BOOL bool #define FALSE false #define TRUE truedas mache ich wenn ich code von visual sonstwas Anwendern bekomme (müll beseitigen).
-
Krux schrieb:
#define BOOL bool #define FALSE false #define TRUE truedas mache ich wenn ich code von visual sonstwas Anwendern bekomme (müll beseitigen).
Jesus... Sag mal bist Du irre? Datentypen ändern, was dadurch die Authentizität und Validität des Quellcodes ändert. Allein schon diese idee ist absolut grob fahrlässig!
-
ja warum gibt es denn überhaupt BOOL, können die microsoftler nicht wie jeder normale normgerechter c++ler nolmale bools nehmen? Oder sind die irgendwie besonders toll?
-
Krux schrieb:
ja warum gibt es denn überhaupt BOOL, können die microsoftler nicht wie jeder normale normgerechter c++ler nolmale bools nehmen? Oder sind die irgendwie besonders toll?
Altlast von C?
-
aso, dann ist es also garnicht von mircrosoft erfunden, sry, hab nie reines c programmiert, selbst printf ist mir unvertraut.
-
Krux schrieb:
ja warum gibt es denn überhaupt BOOL, können die microsoftler nicht wie jeder normale normgerechter c++ler nolmale bools nehmen? Oder sind die irgendwie besonders toll?
Backpfeife?
Die WinAPI besteht aus Tagen da warst Du noch nicht mal ansatzweise geplant, geschweigen deine Eltern sich kennen gelernt - da gabs auch noch kein richtiges C++ oder bool, oder iostream. Da gabs es um es mal auf den Punkt zu bringen: Nichts.
Du kannst froh sein das es BOOL usw. gibt, denn sonst würde dein ganzes Windows/Linux/Mac usw. nicht laufen, da all diese Plattformen aufgrund der abwärtskompatibilität eigene Definitionen benutzen.
Also ich würd hier mal nicht so kräftig auf Microsoft oder anderen Rumreiten, wenn man absolut keine Ahnung hat wovon man spricht! Das deklariert dich zum inkompetenten Kiddie/Troll. 
-
Kenner von Microsoft schrieb:
Die WinAPI besteht aus Tagen da warst Du noch nicht mal ansatzweise geplant, geschweigen deine Eltern sich kennen gelernt - da gabs auch noch kein richtiges C++ oder bool, oder iostream. Da gabs es um es mal auf den Punkt zu bringen: Nichts.
Da hab es noch nicht mal nix!!!!E1f1