return std::map 用 getter 方法

return std::map with a getter method

如标​​题所示,我正试图抓住一个 std::map 容器并 return 它。

我收到以下错误:在没有参数列表的情况下无效使用 template-name 'std::map'

现在我很确定原因与模板有关,但只是没有找到描述我的具体情况的示例。

我的程序相当简单,因为我是休产假的新手。它由这些文件组成:

我认为没有人希望我粘贴所有代码,所以我粘贴了我认为对我的问题至关重要的部分。代码如下:

Movie_Archive.hpp

class MovieArchive {
private:
std::map <std::string, Movie> movie_archive;

public:
std::map getMovieArchive();
};

Movie_Archive.cpp

std::map MovieArchive::getMovieArchive() {
    return movie_archive;
}

main.cpp

TheMovieArchive.controlArchiveStatus(TheMovieArchive.getMovieArchive(), TheMovieArchive.getTitle());

// 检查电影标题是否已经输入

非常感谢您的浏览。我希望有人能找到解决办法。

亲切的问候//Alle

你的意思可能是

class MovieArchive {
private:
  std::map <std::string, Movie> movie_archive;

public:
  std::map<std::string, Movie> getMovieArchive();
};

即,您还必须在 getter 的 return 类型中提供模板参数。

顺便说一句:你可能想写

class MovieArchive {
private:
  std::map <std::string, Movie> movie_archive;

public:
  const std::map<std::string, Movie> & getMovieArchive();
};

即return使用 const 引用而不是内部数据结构的副本。