3

所以基本上这里是我的代码的简化版本,不能编译:

class MyClass
{
    static void foo(X)
    {
        //do something
    }
    
    static void foo(Y)
    {
        //do something
    }
    
    static void bar()
    {
        std::for_each(collection->begin(), collection->end(),
          [&](X& elem)
        {
          foo(elem); //this call generates the error
        });
    }   
};

编译器:安装了 SP1 的 MSVC 2010 它生成的错误消息是:error C3861: 'foo': identifier not found

如果我重命名 foo() 函数,或者如果我在 lambda 之外调用它,则不会发生错误。

更新:

我设法通过明确限定 foo() 来解决这个问题。有趣的部分是 ::MyClass::foo(elem) 有效,但 MyClass::foo(elem) 无效。

4

1 回答 1

5

尝试明确限定foo

MyClass::foo(elem);

(这可能是 MSVC10 错误所必需的解决方法,GCC 接受您的代码没有资格)

于 2013-10-05T13:16:05.640 回答