c++ - 仅输出重载 C++

标签 c++ function overloading

<分区>

Possible Duplicate:
Overloading by return type

是否可以仅重载函数的输出。比如说我有一个函数可以用两种不同的方式返回一个姿势。一个 6DOF 姿势或一个齐次变换矩阵。所以我会有两个功能:

Eigen::Vector6f pose();

Eigen::Matrix4d pose();

是否可以仅使输出过载?

如果我这样做,那么编译器将如何知道要使用哪个函数?

它能告诉我什么时候这样做吗:

Eigen::Matrix4d poseHolder = pose();

要使用第二个功能?如果没有,是否有一种方法可以在不单独命名函数的情况下实现这一点?

最佳答案

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

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

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

Proxy pose() { return Proxy(); }

关于c++ - 仅输出重载 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13906657/

相关文章:

python - 函数如何接受冒号(范围运算符)作为参数(在 Python 中)?

c - 二维数组传递

c++ - 尝试验证用户输入以确保它是两个字符之一

c++ - 按顺序循环结果

c++ - std::promise<T> 是线程安全的吗?

java - 关于向上转换和重载方法的混淆

node.js - Typescript 编译器选择错误的重载

c++ - 使用指向基类的指针时的默认析构函数

c - ARM 汇编器: bx jump to nowhere

c++ - 为一组模板参数重载方法的递归继承