ToB企服应用市场:ToB评测及商务社交产业平台

标题: 你知道C++如何在一个函数内返回不同类型吗? [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2024-1-20 16:30
标题: 你知道C++如何在一个函数内返回不同类型吗?
C++ 中要在一个函数内返回不同类型的值,你可以使用 C++17 引入的 std::variant 或 std::any,或者使用模板和多态。下面将分别介绍这些方法。
方法一:使用 std::variant

std::variant 允许你在一个函数内返回不同类型的值,但它要求所有可能的返回类型都在一个有限的集合中,你需要提前定义这个集合。
首先,包括  头文件:
  1. #include <any><variant>
复制代码
然后,使用 std::variant 来定义函数的返回类型:
  1. std::variant<int, double, std::string> GetDifferentValue(int choice) {
  2.     if (choice == 0) {
  3.         return 42;
  4.     } else if (choice == 1) {
  5.         return 3.14;
  6.     } else {
  7.         return "Hello, World!";
  8.     }
  9. }
复制代码
在这个示例中,GetDifferentValue 函数可以返回 int、double 或 std::string,具体返回哪种类型取决于 choice 参数的值。
方法二:使用 std::any

std::any 允许你在一个函数内返回不同类型的值,而无需提前定义可能的返回类型。但在使用 std::any 时,你需要小心类型安全和类型转换。
首先,包括  头文件:
  1. #include <any><variant>
复制代码
然后,使用 std::any 来定义函数的返回类型:
  1. std::any GetDifferentValue(int choice) {
  2.     if (choice == 0) {
  3.         return 42;
  4.     } else if (choice == 1) {
  5.         return 3.14;
  6.     } else {
  7.         return "Hello, World!";
  8.     }
  9. }
复制代码
在这个示例中,GetDifferentValue 函数可以返回任何类型的值。
方法三:使用模板和多态

另一种方式是使用模板和多态,这样你可以在运行时动态确定返回的类型。这通常需要创建一个基类,派生出具体类型的子类,并使用基类指针或智能指针进行返回。
[code]#include <any><variant>#include <any><variant>class Base {public:    virtual void print() const = 0;};class IntType : public Base {public:    IntType(int value) : value(value) {}    void print() const override {        std::cout




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4