C++ 可以根据接受的值返回两种类型之一的函数

标签 c++ function

fun(int a) {
    if (a) return a; return "empty";
}

我需要一个函数来获取一个数字,并根据它是哪个数字返回一个 int 变量或一个字符串。 请告诉我如何实现这样的功能。

最佳答案

使用 C++ 17,您可以使用 variant :

std::variant<int, std::string> fun(int a) {
  if (a) return a; return "empty";
}

或者使用 optional 的结构:

struct r {
  std::optional<int> i;
  std::optional<std::string> s;
};

r fun(int a) {
  r out;
  if (a) out.i = a; else out.s = "empty";
  return out;
}

或者对于先前的标准,使用带有指示有效性的字段的结构。

struct r {
  enum class type {i, s};
  int i;
  std::string s;
  type t;
};

r fun(int a) {
  r out;
  if (a) {
    out.i = a;
    out.t = r::type::i;
  else {
    out.s = "empty";
    out.t = r::type::s;
  }
  return out;
}

关于C++ 可以根据接受的值返回两种类型之一的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59547137/

相关文章:

c - 使用 c 函数返回多个变量

C 附加到结构体数组

c++ - 将类作为模板参数,并将类构造函数的参数作为方法参数的方法

c++ - 为什么可以将整数类型转换为指针?

C++:为什么 unordered_set::find 比 find 快?

C 计算器,有很多函数 in 函数 in 函数

c++ - 如何进行无分支数字循环?

c++ - 函数如何读取指针?

PHP MYSQL 查询未将数组传递到我的变量中

javascript - 如何从子函数中更改函数的返回值 (JavaScript)