void 值没有被忽略,因为它应该被忽略。通过迭代器的方法设置对指针成员的引用

void value not ignored as it ought to be. Setting reference to pointer member by method from iterator

如果我从 ccfoo 调用 SetCFoo 它有效,但从迭代器(在循环中)它不起作用。

class CFoo{};

class CCFoo
{
public:
    CFoo *m_cf;
    void SetCFoo(CFoo *cf)
    {
        m_cf = cf;
    }
};

int main()
{
    CCFoo ccfoo;
    CFoo cfoo;

    //ccfoo.SetCFoo(&cfoo);  <-- It works

    vector<CCFoo> v1;
    v1.assign(5,*new CCFoo); // I don't care about leak because it is example

    for(vector<CCFoo>::iterator it = v1.begin(); it != v1.end(); it++ )
    {
        *it->SetCFoo(&cfoo);
    }
}

编译器给我以下错误: void 值没有被忽略,因为它应该被忽略

*it->SetCFoo(&cfoo);

相同
*(it->SetCFoo(&cfoo));

您需要的是:

(*it).SetCFoo(&cfoo);

或者只是

it->SetCFoo(&cfoo);

语句开头的 * 不仅不需要,而且会导致编译器错误,因为您不能对 [=16 的返回值应用一元 * 运算符=],类型为void.