gpt4 book ai didi

c++ - 隐藏自由函数的成员函数

转载 作者:可可西里 更新时间:2023-11-01 15:40:18 25 4
gpt4 key购买 nike

void foo(int)
{
}

class X
{
void foo()
{
}

void bar()
{
foo(42);
// error: no matching function for call to 'X::foo(int)'
// note: candidate is:
// note: void X::foo()
// note: candidate expects 0 arguments, 1 provided
}
};

为什么 C++ 无法调用自由函数(唯一具有正确签名的函数)?

最佳答案

因为这两个标识符是在不同的作用域中定义的,重载决议只关注同一作用域中的函数。一旦编译器发现该类有一个 foo,它就会停止爬升到更宽的范围 (C++11 §3.4.1/1),因此自由函数 foo是隐藏的。

您需要使用限定名称来引用全局 foo:

::foo(42);

关于c++ - 隐藏自由函数的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9045185/

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