通过具有转换参数的私有方法重载
Overloading by private method with converted parameter
使用以下代码,我得到:error: ‘void B::add(int)’ is private
。我只是很惊讶,但也很失望得到这个。。。我知道add(int)
方法是私有的,但为什么编译器不能继续寻找其他解决方案,即构造一个A
对象,因为构造函数是A(int)
?
这种行为是由C++标准定义的吗?
有没有解决这个问题的办法,或者我必须重命名我的私有方法/应用皮条习惯用法?
谢谢。
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++:涉及继承和"using"时的方法重载
- CPP 中的 ++ 运算符对字符是否有任何重载?
- 如何让编译器在C++中更喜欢常量方法重载?
- 为什么方法重载或枚举标志定义会触发 gcc7.2 编译器警告?
- C++模板方法重载和具有多态性的类访问
- 基于方法重载类
- 方法重载 C++ -> 只有一个方法调用
- 如何使用 SFINAE 禁用方法重载集?
- 是否有必要重载具有另一个类 B 的数据成员的类 A 的赋值运算符和复制构造函数?
- 使用类别方法重载 NSDecimalNumber 上的算术运算符
- 我的类中有方法的指针数组,但我不能调用我的方法.代码如下
- C++继承和方法重载混淆
- 多态性和方法重载在C++中几乎是一样的
- 如何处理一个子类有方法,而另一个没有方法的子类?
- 了解方法重载规则
- 有方法的类,我不明白类的外观
- 是否有方法为模板参数指定所需的定义
- 我只能有const重载的运算符成员函数
- c++编译错误涉及方法重载的2个模板函数
- Qt/Qml 和方法重载