【发布时间】:2017-07-25 08:19:37
【问题描述】:
我正在跟踪我的类的实例是否使用 std::vector 来存储指向所有类对象的指针。我正在收拾东西并想删除析构函数中的指针......但我收到以下错误:
Brazos.cpp:15:89: 错误:无法将 'std::vector::iterator {aka __gnu_cxx::__normal_iterator >}' 转换为 'const char*' for argument '1' to 'int remove(const char *)' instanceAddress.erase(std::remove(instanceAddress.begin(), instanceAddress.end(), this) 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());
}
【问题讨论】:
-
奇怪的语法 "instanceAddress.erase( some-id
some-id ); ?我的第一个猜测是添加逗号。我不确定。如果你发布一个独立的几乎可编译的测试 -在ideone.com 或类似站点的情况下,将更容易识别问题。