当使用类作为数据类型时,如何在std::variant中存储值



我创建了一个类,并将该类用作std::variant的数据类型。但当我存储值时,我无法访问它,因为它显示了一些错误。

#include <variant>
#include <string>
#include <iostream>
class Random
{
public:
int rand_number;
float rand_dec;
};
int main(){
Random random;
random.rand_number=1;
random.rand_dec=2.1;

std::variant<Random,std::string> input{ "Hello" };

auto PrintVisitor = [](const auto& t) { std::cout << t << "n"; };
std::visit(PrintVisitor, input);}

所以,我想知道当我使用类时如何访问值,因为当我使用默认数据类型时没有问题?

错误太大了,所以我发布重要部件

19 52  C:UsersKhusiDocumentsCPPtest2.cpp  [Error] no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'const Random')

当访问只接受两种类型的变量input时:类Randomstd::string,函数PrintVisitor对变量的每个成员执行一个操作:std::cout << t << "n";。所以类std::string有一个重载输出运算符,但您的类没有。你需要实施它。

这里有一个重载输出运算符的示例:https://learn.microsoft.com/en-us/cpp/standard-library/overloading-the-output-operator-for-your-own-classes?view=vs-2019年

相关内容

  • 没有找到相关文章

最新更新