こんにちはスタックオーバーフローが、私の問題は次のとおりです。C2679は、構造体のコンテキスト
入力:
3
2,2,3
American Beauty#2002
Iron Man#2012
Interstellar#2014
Iron Man#2012
Inception#2010
Forrest Gump#1994
Iron Man#2012
SetTask2.h:
#pragma once
#include <set>
#include <vector>
#include <iostream>
#include <string>
#include <fstream>
#include <iterator>
#include <algorithm>
using namespace std;
struct Movie {
string movieName;
int movieYear;
};
bool operator<(const Movie& m1, Movie& m2);
void SetTask2();
SetTask2.cpp:
#include "SetTask2.h"
bool operator<(const Movie& m1, Movie& m2) {
return m1.movieYear <= m2.movieYear;
}
void SetTask2() {
ifstream in("SetTask2.in");
int numberOfPersons;
in >> numberOfPersons;
vector<set<Movie>> preferences;
string prefNumberS;
in >> prefNumberS;
for (int i = 0; i < prefNumberS.size(); i++) {
if (prefNumberS[i] != ',') {
int number = (int)prefNumberS[i] - 48;
string mName;
string mYear;
Movie m;
set<Movie> s;
for (int j = 0; j < number; j++)
{
getline(in, mName, '#');
getline(in, mYear, '\n');
m.movieName = mName;
m.movieYear = stoi(mYear);
s.insert(m);
preferences.push_back(s);
}
}
}
}
Main.cpp:
#include "SetTask2.h"
using namespace std;
int main()
{
SetTask2(); // Set : Task 2
return 0;
}
その後、私はこのエラーを取得する:バイナリ
エラーC2679「<」:なしオペレータは
タイプの右辺のオペランド 『のconst映画』取る(あるいは全く許容可能な変換はありません)が見つかりません理由を教えてもらえますか?
この問題を再現するのに十分なコードを投稿してください。私は 'std :: set'を使用しようとした後にエラーが' operator <'を定義している可能性があると思います。 – templatetypedef
質問をファイルの内容で編集します。 – zVoxty