i'm trying to work with a class that uses a vector of smartpointer with reference counting that it had to implement on my own. everything works fine but when i try to remove an iterator from my vector i get the following error: (inside algorithm) semantic issue no viable overloaded '=' which occurs at:
template <class _InputIterator, class _OutputIterator>
inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator
__move(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
{
for (; __first != __last; ++__first, ++__result)
*__result = _VSTD::move(*__first);
return __result;
}
which i guess is part of ...
here is my code:
#include "Project.h"
#include "Date.h"
#include "mSharedPtr.h"
class ProjectCycle
{
private:
mSmartPtr<Project> project;
Date startDate;
int numberOfEmployees;
std::vector<mSmartPtr<Employee>> employeeList;
public:
ProjectCycle(const mSmartPtr<Project>& pro, const Date& strdate, const int& numemp, const std::vector<mSmartPtr<Employee>>& list) :
project(pro), startDate(strdate), numberOfEmployees(numemp), employeeList(list) {};
void finishCycle();
~ProjectCycle();
void timeForwardHours(int);
void startProject();
void terminateProject();
void removeEmp(emp_vec::iterator);
};
cppFile:
#include "ProjectCycle.h"
#include <vector>
void ProjectCycle::timeForwardHours(int num) {
int totalDay=0;
// For each day ////////////////////////////////
for (int day=0; day<num; totalDay=0,day++) {
// For each employee ////////////////////////////
emp_vec::iterator empIter = employeeList.begin();
for (; empIter != employeeList.end(); empIter++) {
totalDay += (*empIter)->addHoursToCurrProj();
if ( (*empIter)->isDoneProject())
removeEmp(empIter);
}
/// Progress project ////////////////////////////////////
project->setHoursLeft( project->getHoursLeft()-totalDay );
if (project->getHoursLeft() <= 0) {
terminateProject();
break;
}
}
}
void ProjectCycle::removeEmp(emp_vec::iterator itr){
project->addToDoneList(itr);
employeeList.erase(itr);
thanks in advance,