运行列表valuse C++eclipse
running over list valuse C++ eclipse
我有一个名为Movie的类,它包含指向流派的指针列表。问题是,每次我想对两部不同类型的电影进行运算符+时,我都希望它们的联合拥有不同的电影A和B。相反,它们中的一部会碾压另一部。。
class MovieIndustry {
list<Movie> movies; //list of pointers to relevant type of Workers
list<Genre> genres;
Movie final;
Genre* toAdd;
void MovieIndustry::addMoviesTogether(string allMovies) {
std::list<Movie> moviesToAdd; //HAS MOVIES, CODE WORKS, NOT THE PROBLEM..
int i=0;
Movie temp;
bool cutSpace=true;
bool notFound=false;
for (std::string each; std::getline(split, each, split_char);
tokens.push_back(each))
{
if(cutSpace)
{
each= each.substr(1);
cutSpace=false;
}
int k;
for (std::list<Movie>::iterator it2=movies.begin(); it2!= movies.end();
++it2)
{
k++;
if( it2->getCode() == each)
{
moviesToAdd.push_back(*it2);
}
if(k==movies.size())
{
notFound=true;
break;
}
}//end for
}//endfor
if(notFound) //MEANS THERE IS NOT MOVIE WITH SUCH A CODE
return;
for (std::list<Movie>::iterator it2=moviesToAdd.begin();
it2!=moviesToAdd.end(); ++it2)
{
i++;
if(i==1) //I don't want to overload NULL
{
final=*it2;
continue;
}
else
{
temp=final;
final = temp + *it2;
}
}// end for
movies.push_back(final)
}
Movie Movie:: operator+ (const Movie& other) const{
Movie toReturn,toCheck;
Worker* toAdd,toChecking;
Genre* genreAdd,GenreChecking;
std::list<Genre*>::const_iterator checkOther;
std::list<Genre*>::const_iterator genresOfLonger;
if(length >other.getLength())
{
toReturn=*this;
toCheck=other;
}
else
{
//cout<< "inside right else"<<endl;
toReturn = other;
toCheck = *this;
}
if(toCheck.getNumOfGenres() > 0 )
{
int i=0;
int firstNum = toReturn.getNumOfGenres();
for (checkOther=toCheck.getGenresInMovie().begin();
i != toCheck.getNumOfGenres(); ++checkOther)
{
i++;
int j=0;
if(firstNum==0) //ADDED THEM ALL, BECAUSE THE FIRST HAS NO GENRES
{
genreAdd= (*checkOther);
toReturn.addGenre(genreAdd);
genreAdd = NULL;
}
else
{
for (genresOfLonger=toReturn.getGenresInMovie().begin(); j!=
firstNum; ++genresOfLonger)//look for it
{
j++;
if( (*genresOfLonger)-> getName() == (*checkOther) -
>getName())
{
break; //leave loop, look for next one
}
else
{
if ( j== firstNum) //its not here, add it
{
genreAdd= (*checkOther);
toReturn.addGenre(genreAdd);
genreAdd = NULL;
}
} //end else
}//end for
}//end else
}
}//endif
return toReturn;
这是操作员=:
Movie& Movie:: operator= (const Movie& other) {
Genre* genrePointer;
if (other.getNumOfGenres () > 0 )
{
int k=0;
for (std::list<Genre*>::const_iterator
git=other.getGenresInMovie().begin();k!= other.getNumOfGenres(); ++git)
{
k++;
genrePointer= (*git);
this->addGenre(genrePointer);
genrePointer=NULL;
}
}
return *this;
我的复制构造函数简单地说:
Movie::Movie(const Movie& toCopy) {
*this=toCopy;
}
在检测它的时候,我发现当我把参数b发送给运算符+时,它也已经有了A和b的基因。。我不明白
正如我提到的,问题是,说电影A有科幻,电影B有动作,如果我想把它们添加到电影决赛=A+B,决赛得到类型"动作,动作"。我很确定问题出在这个循环中,因为当我从不同的函数发送给运算符+和运算符=时,一切都如预期的那样。。帮助。。?
我的想法和tobi一样,直到我看到//HAS MOVIES, CODE WORKS, NOT THE PROBLEM..
如果事先对两个流派列表进行排序,则可以使用set_union。
相关文章:
- 无法在Ubuntu上将共享库与Eclipse链接
- Eclipse CDT:单个项目中有多个C++文件
- C++ 运行时链接器错误 (liblog4cpp.so.5) Eclipse
- Eclipse/Netbeans 中的处理模式行
- 如何在使用 SDL2 的 Eclipse 中构建 c++ 程序
- 使用 Eclipse CDT 进行 Cplex 配置
- Eclipse 没有在 Windows (C++) 中编译.exe
- 在 Eclipse 上启用 C++17 以使用 'std::byte'
- Eclipse CDT clang 工具链 - 无法从链接器选项中删除 stdlibc++,但可以添加 libc++,E
- 在 Eclipse 中添加库的工作方式是否与在 Visual Studio 中相同?
- 将编译器开关添加到 Eclipse CDT 内置编译器设置生成?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- 在 eclipse 中,将宏重定义视为错误而不是警告
- Eclipse C++ 字符串作为函数参数
- 如何在 Eclipse 中一次从多个源文件进行构建
- Eclipse 可执行架构类型
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- Eclipse/CDT_C++给出"语义错误_"类型XXX无法解决"。项目运行
- 运行列表valuse C++eclipse