使用getter方法返回std :: map

时间:2018-08-08 20:59:02

标签: c++ templates return-type stdmap

正如标题所示,我正在尝试抓住std :: map容器并返回它。

我收到以下错误:没有参数列表的模板名称'std :: map'的无效使用

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

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

  • main.cpp
  • Movie_Archive.hpp
  • Movie_Archive.cpp
  • Movie.hpp
  • Movie.cpp
  • Helper.hpp
  • Helper.cpp

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

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

1 个答案:

答案 0 :(得分:4)

您可能是说

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

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

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

顺便说一句:您可能想写

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

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

即返回一个const引用,而不是内部数据结构的副本。