c ++使用vector :: erase

时间:2015-06-03 16:50:08

标签: c++ vector smart-pointers

我试图使用一个使用smartpointer向量的类,并使用它必须自己实现的引用计数。 一切正常,但当我尝试从我的向量中删除迭代器时,我得到以下错误: (内部算法) 语义问题 没有可行的超载' =' 发生在:

$('input.select2-input').val();

我认为是...的一部分。

这是我的代码:

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;
}

cppFile:

#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);
};

提前感谢,

1 个答案:

答案 0 :(得分:0)

我认为问题是由operator=()中缺少有效mSmartPtr<Employee>重载造成的。

添加以下成员函数

mSmartPtr& operator=( mSmartPtr&& rhs );
mSmartPtr中的