【发布时间】:2020-10-16 20:53:40
【问题描述】:
我创建了一个类并将该类用作 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:\Users\Khusi\Documents\CPP\test2.cpp [Error] no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'const Random')
【问题讨论】:
-
请发布确切的错误及其发生位置。不用猜测会容易得多。
-
如错误所示,您尚未为
Random定义operator<<重载。 -
@0x5453 你能告诉我怎么做吗?我对此很陌生,我不知道该怎么做。
-
@SHIVANSHUSAHOO This 问题有一些例子。
-
@0x5453 谢谢..