gpt4 book ai didi

c++ - 通过带有转换参数的私有(private)方法重载

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:34 25 4
gpt4 key购买 nike

使用以下代码,我得到:error: ‘void B::add(int)’ is private。我很惊讶但也很失望得到这个......我知道 add(int) 方法是私有(private)的,但为什么编译器不能继续寻找其他解决方案,即构造一个 A 对象,因为构造函数是 A(int) ?

此行为是否由 C++ 标准定义?

这个问题有解决方案吗,或者我必须重命名我的私有(private)方法/应用 pimpl idiom?

谢谢。

struct A
{
A(int) {}
};


struct B
{
void add(const A&) { }

private:
void add(int) { }
};

int main()
{
B b;
b.add(5);
return 0;
}

最佳答案

因为 void add(int)b.add(5) 的最佳匹配。

您可以使用 b.add(A(5)); 来解决这个问题。

关于c++ - 通过带有转换参数的私有(private)方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351921/

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