我想采取任何类的任意实例;对于这个实例,我想在其他实例中添加一个值。我不希望这个实例的价值成为总和的一部分。我写的代码似乎达不到目标。
我有一个c ++类foo
class foo
{
private:
static int count ;
int someVar ;
int anotherVar ;
void setCount( newCount )
{
count = newCount ;
}
public:
void doSomething(void)
{
while ( index < count - 1 )
{
// don't do the calculation
// when this instant is the
// one having its version of
// anotherVar updated
if ( foo == this-> ?? )
{
continue ;
}
someVar += anotherVar ;
index++ ;
}
}
} ;
换句话说,我有一个foo实例的向量。我想把任意一个实例从剩余的实例中添加另一个另一个变量到此实例的someVar值。
在main中,我将迭代foo的所有实例,将另一个变量设置为所有其他实例&#39; someVar当前的interated实例。
答案 0 :(得分:0)
你不能只是魔术foo
引用,你必须提供它们的方法。
template<typename Iterator>
foo::doSomthing(Iterator iter, Iterator end)
{
for (; iter != end; ++iter)
{
if (&*iter == this) { continue; }
someVar += iter->otherVar;
}
}
int main ()
{
std::vector<foo> foos = { /* some foos*/ };
foos.front().doSomething(foos.begin(), foos.end());
}