我有一个C++类,我已经超负荷内部限定一对纯虚函数过载。 代码段如下::功能与“uint32_t的”&uint64_t中”在纯虚函数在C++中唯一的变化
virtual uint64_t Abc::GetValue()=0;
virtual uint32_t Abc::GetValue()=0;
这里,在功能上签名,唯一的区别是GETVAL()“uint32_t
” &“uint64_t
”的返回类型..
它抛出编译错误,这不能超载。
Plz帮助我解决这个问题。
我有一个C++类,我已经超负荷内部限定一对纯虚函数过载。 代码段如下::功能与“uint32_t的”&uint64_t中”在纯虚函数在C++中唯一的变化
virtual uint64_t Abc::GetValue()=0;
virtual uint32_t Abc::GetValue()=0;
这里,在功能上签名,唯一的区别是GETVAL()“uint32_t
” &“uint64_t
”的返回类型..
它抛出编译错误,这不能超载。
Plz帮助我解决这个问题。
您不能基于返回类型进行重载,只能根据参数类型进行重载。这是因为根据调用函数的方式来选择超载,并且函数调用没有指定期望的返回类型。
选项包括:
在C++ onverloading上只做参数的功能不在返回类型。所以你重新定义了一个错误的功能。
所以,如果你做'abc.GetValue()',它应该调用哪一个? –
只有在返回类型中,关于差异的整个事情并不会造成超负荷......是的,那就是现在正在咬你。 – WhozCraig
[通过返回类型重载函数?]的可能重复(http://stackoverflow.com/questions/442026/function-overloading-by-return-type) – ecatmur