你可以使用C++中所需的功能来实现这一点,你可以使用std::variant来动态处理不同的类型。
以下是一个片段:
#include <iostream>
#include <variant>
#include <string>
// Define a variant that can hold either an int or a string
using VariantType = std::variant<int, std::string>;
VariantType varx(const std::string& a, const std::string& b) {
if (b == "int") {
return std::stoi(a); // Convert the string to an int
}
return a; // Return the string as is
}
int main() {
VariantType var0 = varx("43", "int");
VariantType var1 = varx("Hello", "string");
// To get the value out of the variant, you need to use std::get
if (std::holds_alternative<int>(var0)) {
std::cout << "var0 is an int: " << std::get<int>(var0) << std::endl;
} else {
std::cout << "var0 is a string: " << std::get<std::string>(var0) << std::endl;
}
if (std::holds_alternative<int>(var1)) {
std::cout << "var1 is an int: " << std::get<int>(var1) << std::endl;
} else {
std::cout << "var1 is a string: " << std::get<std::string>(var1) << std::endl;
}
return 0;
}