我有以下类文件
#pragma once
#include <memory>
#include <iostream>
#include <SFML/Graphics.hpp>
class gif
{
public:
gif(const std::vector<std::shared_ptr<sf::Texture>>& textures);
sf::Texture getAt(int);
private:
std::vector<std::shared_ptr<sf::Texture>> textures;
};
gif::gif(const std::vector<std::shared_ptr<sf::Texture>>& c)
{
textures = c;
}
sf::Texture& gif::getAt(int index)
{
return textures.at(index);
}
变量纹理似乎不像传统的矢量那样工作,并且没有at(int)
函数来指向我的矢量中的元素。如何使用sf::Texture
指向textures
中的某个integer
。
我试过搜索谷歌,但似乎找不到任何可以帮助我的东西。我只是不正确地理解std::shared_ptr
吗?如果我不是,那么我将如何使用它。
答案 0 :(得分:1)
variables.at()
将返回std::shared_ptr<sf::texture>
类型的对象,该对象不会隐式转换为sf::texture&
。您需要使用operator*
取消引用它:
sf::Texture& gif::getAt(int index)
{
return *(textures.at(index));
}