输出只重载c ++

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)

要使用第二个功能?如果没有,有没有办法实现这一点,而不只是单独命名的功能?

mel*_*ene 5

不,你通常不能这样做.如果你真的坚持为两个不同的函数使用相同的名称,你可以通过返回一个带有重载转换运算符的代理对象来伪造它:

struct Proxy {
    operator Eigen::Vector6f() const {
        // ...
    }

    operator Eigen::Matrix4d() const {
        // ...
    }
};

Proxy pose() { return Proxy(); }
Run Code Online (Sandbox Code Playgroud)