gpt4 book ai didi

c++ - BOOST_FOREACH : What is the error on using this of a STL container?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:49:35 25 4
gpt4 key购买 nike

有谁知道为什么以下会在 VC9 上产生错误?

class Elem;
class ElemVec : public vector<Elem>
{
public:
void foo();
};

void ElemVec::foo()
{
BOOST_FOREACH(Elem& elem, *this)
{
// Do something with elem
}
return;
}

我得到的错误是:

error C2355: 'this' : can only be referenced inside non-static member functions

我现在拥有的唯一(hack)解决方案是:

void ElemVec::foo()
{
ElemVec* This = this;
BOOST_FOREACH(Elem& elem, *This)
{
// Do something with elem
}
return;
}

最佳答案

您不应该继承自 STL 容器。这些不是多态类,这就是 BOOST_FORACH 无法处理您的派生类的原因。

尝试使用聚合。

关于c++ - BOOST_FOREACH : What is the error on using this of a STL container?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/716810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com