有没有一种方法可以避免为std :: variant类成员中的所有类型编写构造函数?

问题描述 投票:0回答:2

我有这样的struct

struct A
{
    int a;
    std::variant<int, float, char> b;

    A() = default;
};

我想添加一个构造器,该构造器将同时初始化ab。看来我将不得不为b中的所有类型(如A::A(int a1, int b1)A::A(int a1, float b1)等)编写一个构造函数。

是否有避免这种情况的方法?

我有一个这样的结构:struct A {int a; std :: variant b; A()=默认值; };我想添加一个构造函数,它将同时初始化a和b。看来我会...

c++ constructor c++17 variant
2个回答
6
投票

您可以为您的类创建一个模板化的构造函数,并且充其量使用完善的转发将其参数传递给variant成员的构造函数:


0
投票

我想类似的事情也可以完成,但是,它将复制您传递的变量。]​​>

A::A(int a1, std::variant<int, float, char> b1)

© www.soinside.com 2019 - 2024. All rights reserved.