【发布时间】:2018-05-04 00:47:25
【问题描述】:
编辑:
如果您遇到这种情况,混淆是与 xcode 调试器而不是代码本身有关。代码很好
C++ 新手,但不会编程。
我不明白为什么当我将这个列表的值插入地图时没有保存它们。
main.cpp
#include <iostream>
#include <string>
#include <memory>
#include <list>
#include <map>
#include "Movie.h"
#include "Date.h"
#include "Cinema.h"
using namespace std;
int main()
{
Cinema cinema;
string name = "transformers";
Movie * transformers = new Movie(name, 2018, 6, 10);
list<int> times;
times.push_front(1200);
times.push_front(1600);
cinema.addMovie(transformers, times);
cinema.printShowTimes(transformers);
return 0;
}
电影.cpp
#include "Cinema.h"
#include "Movie.h"
using namespace std;
Cinema::Cinema() {
}
void Cinema::addMovie(Movie * movie, list<int> & movie_time) {
running_movies.push_front(movie);
movie_times.insert(pair< Movie *, list<int> >(movie, movie_time));
}
void Cinema::printShowTimes(Movie * movie) {
MovieMap::iterator it = movie_times.find(movie);
if(it != movie_times.end()) {
list<int> times = it->second;
}
}
电影.h
#ifndef CINEMA_H
#define CINEMA_H
#include "Movie.h"
#include <list>
#include <map>
typedef std::map< Movie *, std::list<int> > MovieMap;
typedef std::list< Movie * > MovieList;
class Cinema
{
public:
Cinema();
Cinema(Cinema &);
void addMovie(Movie *, std::list<int> &);
void movieRunningAt(Movie &, std::list<int> &);
void printShowTimes(Movie *);
private:
MovieList running_movies;
MovieMap movie_times;
};
#endif
似乎我的电影已正确保存,但时间列表只是 printShowTimes 中的垃圾值,即使它们存在于 addMovie 函数中。
我感觉它与指针有关,但我对它们还不是很满意!
【问题讨论】: