Ungültige "type qualifiers"
-
Hallo,
ich will eine Variable mit einer Variable des Types sf::Texture initalisieren:mSprite(textureHolder.getResource(Textures::ID_EAGLE));Sprite Konstruktor:
explicit Sprite(const Texture& texture);TextureHolder getResource:
const sf::Texture& getResource(const Textures::ID& id);TextureHolder ist ein typedef für ResourceHolder<Textures::ID, sf::Texture>.
Nur jetzt bekomme ich 2 Fehlermeldungen, wobei ich nicht versehe was ich falsch mache...error C2662: 'ResourceHolder<Identifier,Resource>::getResource' : cannot convert 'this' pointer from 'const TextureHolder' to 'ResourceHolder<Identifier,Resource> &'
IntelliSense: the object has type qualifiers that are not compatible with the member function
-
Wie sieht denn die Zeile aus die den Fehler produziert?
-
Ich rate mal:
Der textureHolder aus deinem ersten Programmstück ist const?
-
mSprite(textureHolder.getResource(Textures::ID_EAGLE));Das prduziert den Fehler.
Ja der liefert eine constante sf::Texture zurück.const sf::Texture& getResource(const Textures::ID& id);Was ist daran falsch?
Der KOnstruktor vom Sprite verlangt doch eine Referenz auf eine constante Texture...explicit Sprite(const Texture& texture);
-
Nein, ich meine: ist der textureHolder const, nicht der Rückgabewert?
-
Problem ist (wahrscheinlich), dass textureHolder konstant ist und du deshalb nicht getResource aufrufen kannst.
Fix:
// vvvvv const sf::Texture& getResource(const Textures::ID& id) const; // ^^^^^
-
Danke, genua das wars

-
Wie sieht denn die Zeile aus die den Fehler produziert?
-
cooky451 schrieb:
Wie sieht denn die Zeile aus die den Fehler produziert?
Wer etwas mitdenkt, kommt auf
mSprite(textureHolder.getResource(Textures::ID_EAGLE));weil das die einzige gepostete Codezeile ist, die den Fehler enthalten kann.