繁体   English   中英

函数重载,只有c ++中的纯虚函数中的“ uint32_t”和uint64_t”发生了变化

[英]Function overloading with the only change in “uint32_t” & uint64_t" in pure virtual function in c++

我在c ++类中定义了一对纯虚函数,我已经重载了。 下面的代码段:

virtual uint64_t Abc::GetValue()=0; 
virtual uint32_t Abc::GetValue()=0;

在这里,函数签名的唯一区别是GetVal()的返回类型“ uint32_t ”和“ uint64_t ”。

抛出编译错误,该错误不能被重载。

请帮助我。

您不能仅基于参数类型基于返回类型进行重载。 这是因为根据函数的调用方式选择了重载,并且函数调用未指定预期的返回类型。

选项包括:

  • 给函数起不同的名字;
  • 通过参考参数而不是返回值“返回”值;
  • 添加一个虚拟参数,每个版本具有不同的类型,以指定返回类型;
  • 返回一个可转换为任何一种类型的“代理”对象(尽管这意味着您只有一个函数,因此派生类无法分别覆盖这两个版本)。

在c ++中,onverloading仅在函数的参数上执行,而不在返回类型上执行 因此,您正在重新定义相同的功能,这是一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM