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

question-closed SFMLOWE PROBLEMY

Object Storage Arubacloud
0 głosów
175 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 Ekspert (344,860 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 193 wizyt
pytanie zadane 13 lutego 2018 w C i C++ przez jacekk024 Użytkownik (620 p.)
0 głosów
2 odpowiedzi 330 wizyt
pytanie zadane 13 kwietnia 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)
+3 głosów
0 odpowiedzi 399 wizyt

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...