从shared_ptr中获取元素

时间:2017-11-21 02:29:19

标签: c++ vector sfml

我有以下类文件

#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吗?如果我不是,那么我将如何使用它。

1 个答案:

答案 0 :(得分:1)

variables.at()将返回std::shared_ptr<sf::texture>类型的对象,该对象不会隐式转换为sf::texture&。您需要使用operator*取消引用它:

sf::Texture& gif::getAt(int index)
{
    return *(textures.at(index));
}