• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed SFMLOWE PROBLEMY

0 głosów
229 wizyt
pytanie zadane 5 grudnia 2018 w C i C++ przez Poczprogramista123 Bywalec (2,900 p.)
zamknięte 5 grudnia 2018 przez Poczprogramista123

Witam, mam szablon klasy ktory przechowuje rozne obiekty (textury dzwieki itp). Sprawa dotyczy metody get ktora ma zwrócić referencje na konkretny podany w argumencie element. 

Jak to wyglada.


template<typename T>
class ResourceManager
{
public:
    ResourceManager()=default;
    ResourceManager(const ResourceManager&)=delete;
    ResourceManager operator =(const ResourceManager&)=delete;
    virtual void loadFromFile(string ,string &);
    T& operator[](string &);
    const T& get(const string&);

protected:
    map<string ,T*> m_resources;

};


template<typename T>
const T& ResourceManager<T>::get(const string &name)
{
    assert(m_resources.find(name)==m_resources.end());
   /// Kompilator wskazuje na tego returna  
 return m_resources[name];
}


I wywolanie


ResourceManager<sf::Texture> TextureManager;

/// Zaladowywuje

for (string texture : { "Mario", "Sky", "AnimTiles", "Enemies", "Bowser", "Items", "Logo" })
    {
        string which=texture + ".png";
        getTexturManager().loadFromFile(texture,which);
    }

Sprite m_background;
m_background.setTexture(TextureManager.get("Sky"));

I komunikat kompilatora

invalid initialization of reference of type 'const sf::Texture&' from expression of type 'std::map<std::basic_string<char>, sf::Texture*, std::less<std::basic_string<char> >, std::allocator<std::pair<const std::basic_string<char>, sf::Texture*> > >::mapped_type {aka sf::Texture*}'
 

Z góry dzięki i prosze o pomoc bo blokuje mnie to w dalszym pisaniu.

komentarz zamknięcia: Juz jasne

1 odpowiedź

+1 głos
odpowiedź 5 grudnia 2018 przez adrian17 Mentor (354,120 p.)
wybrane 5 grudnia 2018 przez Arkadiusz Waluk
 
Najlepsza
map<string ,T*> m_resources;

Mapa przechowuje wskaźniki na sf::Texture.

Indeksowanie `map[name]` zwraca (referencję na) ten typ, czyli sf::Texture*.

Próbujesz zwrócić sf::Texture&.

Podobne pytania

0 głosów
2 odpowiedzi 245 wizyt
pytanie zadane 13 lutego 2018 w C i C++ przez jacekk024 Użytkownik (620 p.)
0 głosów
2 odpowiedzi 514 wizyt
pytanie zadane 13 kwietnia 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)
+3 głosów
0 odpowiedzi 656 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...