1

マップへの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;
}

-

4

2 に答える 2

4

代わりに参照を返すだけです。

const map<string, int > & WordCount::get_map()
{
    const map<string, int > &ptr = m_word_counts;
    return ptr;
}
于 2012-10-12T03:41:49.853 に答える
2
const map<string, int > *ptr = &m_word_counts;
于 2012-10-12T03:41:10.577 に答える