Fan*_*Fox 2 c++ overloading function
可能重复:
按返回类型重载
是否可以仅重载函数的输出.比方说,我有一个可以两种不同方式返回姿势的功能.6DOF姿势或同质变换矩阵.所以我会有两个功能:
Eigen::Vector6f pose();
Run Code Online (Sandbox Code Playgroud)
和
Eigen::Matrix4d pose();
Run Code Online (Sandbox Code Playgroud)
是否可以仅过载输出?
如果我这样做,那么编译器将如何知道要使用哪个函数?
它可以告诉我什么时候这样做:
Eigen::Matrix4d poseHolder = pose();
Run Code Online (Sandbox Code Playgroud)
要使用第二个功能?如果没有,有没有办法实现这一点,而不只是单独命名的功能?
不,你通常不能这样做.如果你真的坚持为两个不同的函数使用相同的名称,你可以通过返回一个带有重载转换运算符的代理对象来伪造它:
struct Proxy {
operator Eigen::Vector6f() const {
// ...
}
operator Eigen::Matrix4d() const {
// ...
}
};
Proxy pose() { return Proxy(); }
Run Code Online (Sandbox Code Playgroud)