0

宿題の地図を作成しようとしていますが、ヘッダーで宣言し、アクセスしようとしていますが、エラーが発生し続けます。コードのどこが悪いのかわかりません。私はコードをload関数に実装しましたが、あなたが感謝を助けることができれば、get関数でそれを動作させることができないようです

これはヘッダーファイルです

class Movies {
    // data is private by default
    Movie *movies;
    int movieCnt;
    map<string,**string> Mymap;

public:
    Movies(string);
    int getMovieCount() const;
    const Movie * getMovie(string) const;
    ~Movies();

 private:
    void loadMovies(string);
    int getMovieHash(string) const;
};

これはコードです

const Movie * Movies::getMovie(string mc) const {
    if(mc.length()==0)
        return NULL; // not found
    else
        return &(Mymap.find(mc));
}

Movies::~Movies() {delete[] movies; movies = NULL;}

void Movies::loadMovies(string fn) {
    ifstream iS(fn);  // technically should be c_str
    string s;
    getline(iS, s); // skip heading
    getline(iS, s);
    movieCnt=0;
    while(!iS.eof()) {
        Movie* m = new Movie(s);
        Mymap[(m->getTitle())] = *m;
        movieCnt++;
        getline(iS, s);
    }
    iS.close();
}
4

3 に答える 3

1

ポインターのアスタリスクが間違った場所にあります。次のようになります。

 map<string,string**> Mymap; 

またはさらにC++のように

 map<std::string, std::vector<std::vector<std::string>>> Mymap;

この方法getMovie(string f)で機能を改善できます。

const Movie Movies::getMovie(string mc) const 
{
   if(mc.length() > 0)
   {
      auto it = Mymap.find(mc);
      if (it != Mymap.end())
         return *it; //by value
   }
   else
       throw std::runtime_error;
}
于 2013-03-12T08:29:47.260 に答える
0

マップの値はMovieオブジェクトでなければなりません。

map<string, Movie> Mymap;
于 2013-03-12T08:31:11.503 に答える
0

エラーについてより具体的に教えてください。何が起こるのですか?それまでの間、これを見てください:

const Movie * Movies::getMovie(string mc) const {
if(mc.length()==0)
    return NULL; // not found
else
    return &(Mymap.find(mc));
}

return &(Mymap.find(mc));一時オブジェクトへのポインターを返す場合、これが機能する可能性はほとんどありません。オブジェクト自体、

const Movie Movies::getMovie(string mc) const {
if(mc.length()==0)
    return NULL; // not found
else
     std::map<string, string**>::const_iterator it = Mymap.find(mc);
     Movie m = it*;
     return m;
}

またはエントリへのインデックスを作成し、インデックスを使用してマップから取得します。

于 2013-03-12T08:31:12.127 に答える