我正在跟踪我的类的实例是否使用std::vector来存储指向所有类对象的指针。我正在整理东西,想要删除析构函数中的指针.但我得到了以下错误:
instanceAddress.erase(std::remove(instanceAddress.begin(),Brazos.cpp:15:89: Brazos.cpp:15:89:无法将参数'1‘到'int remove(const char*)’的迭代器{aka __gnu_cxx::__normal_iterator >}转换为'const char*‘,这是instanceAddress.end();
看来我需要取消迭代器..。这是我的代码:
std::vector<Brazos*> Brazos::instanceAddress;
Brazos::Brazos(Mano mano)
{
instanceAddress.push_back(this);
_mano = mano;
}
Brazos::~Brazos(void)
{
instanceAddress.erase(std::remove(instanceAddress.begin(), instanceAddress.end(), this) instanceAddress.end());
}发布于 2017-03-05 14:15:30
你少了一个逗号:
instanceAddress.erase(std::remove(instanceAddress.begin(), instanceAddress.end(), this), instanceAddress.end());
^此外,错误消息引用了int std::remove(const char*),因此确保您拥有#include <algorithm>以获得正确的std::remove。
https://stackoverflow.com/questions/42609092
复制相似问题