gpt4 book ai didi

c++ - lambda 主体内的重载静态成员函数调用无法编译

转载 作者:太空狗 更新时间:2023-10-29 20:42:17 25 4
gpt4 key购买 nike

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

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) 无效。

最佳答案

尝试显式限定 foo:

MyClass::foo(elem);

(这可能是 MSVC10 错误的必要变通方法,GCC 接受您的代码而没有资格)

关于c++ - lambda 主体内的重载静态成员函数调用无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19198180/

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