小编Mak*_*ico的帖子

从结构体隐式转换

这是我的结构,它在创建变量时使用隐式转换。

#include <string>
#include <variant>

using namespace std;
using val = variant<int, string, double, bool, long, long long, long double>;

struct value
{
    val innerVal;
    value():innerVal(""){}
    value(const val &c) : innerVal(c) {}

    template <typename T>
    operator T()
    {
          return get<T>(innerVal);
    }

    template <typename V>
    value &operator=(const V &t)
    {
        innerVal = t;
        return *this;
    }
};
Run Code Online (Sandbox Code Playgroud)

这就是我在构造变量时使用它的方式,它工作正常,但是当我分配一个已经创建的变量来value构造它时,它会给出错误。

int main(int argc, char* argv[])
{
    value h;
    h = "String";
    string m = h;// Here works fine
     string b = …
Run Code Online (Sandbox Code Playgroud)

c++ struct casting variant

0
推荐指数
1
解决办法
132
查看次数

标签 统计

c++ ×1

casting ×1

struct ×1

variant ×1