【问题标题】:accessing a map by returning a pointer to it c++通过返回指向地图的指针来访问地图c ++
【发布时间】:2012-10-02 20:14:54
【问题描述】:

我正在尝试在一个类中创建一个函数,该函数返回一个指向映射的 const 指针。然后在另一个类中,我可以有一个函数,可以接受常量指针,声明迭代器,并将映射的内容复制到向量中。这个映射类到矢量类是练习的要求。我以前从未对映射做过 ptrs,而且我没有编译器喜欢的语法。这是我在 Map 中的函数声明:

class WordCount
{
    public:
        WordCount();
        ~WordCount();
        void word_insert(std::string clean_word);
        void print_all();
        const std::map<std::string, int> * get_map();

    private:
        std::map<std::string, int> m_word_counts;
        std::map<std::string, int>::iterator m_it;
        std::pair<std::map<std::string, int>::iterator, bool> m_ret; 
};

但是当我尝试这样定义函数(或我尝试过的许多变体)时,我得到一个转换错误。下面需要改变什么?

const map<string, int > * WordCount::get_map()
{
    const map<string, int > *ptr = m_word_counts;
    return ptr;
}

--

【问题讨论】:

  • 为什么是指针?为什么不直接返回参考?

标签: c++ class pointers map


【解决方案1】:
const map<string, int > *ptr = &m_word_counts;

【讨论】:

    【解决方案2】:

    我只会返回一个引用。

    const map<string, int > & WordCount::get_map()
    {
        const map<string, int > &ptr = m_word_counts;
        return ptr;
    }
    

    【讨论】:

    • @user1628498:花时间阅读一本关于 C++ 的优秀教程或介绍性书籍。引用和指针是语言中的基本构建块。
    猜你喜欢
    • 2011-02-18
    • 2015-06-23
    • 2014-08-18
    • 2018-09-13
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多