variant 相关问题

变体数据类型是包含其他数据类型的标记联合。它是[ocaml]中的标准数据类型,通常用于经典Microsoft Windows [com]编程中的语言([c ++]和[vb6])之间的互操作调用。它也存在于使用其他名称的其他语言中,例如[区别联盟]或[代数数据类型]的更一般概念

使用包含范围变量的变体数组来填充范围,稍后由范围变量按名称引用是失败的

考虑下面的子程序。我几乎找到了我要找的东西,但它不太正确。 已知要考虑:此模块的声明语句已设置每个变量(Tota ...

回答 1 投票 0

Android Studio:找不到构建变体错误

我是 android 开发的新手,我开始从头开始开发我在网上购买的项目,按照文档,我遇到了一个错误,说没有找到“应用程序”的变体。检查构建 f...

回答 9 投票 0

在 python 中检查元素是否在基因内

我被一个 python 脚本困住了,该脚本试图检查列表中的某些元素是在基因内还是在基因外。为此,我使用以下非常基本的命令: 字符=[] 位置=[] te=[] 色度=[] 开始=[] 电子...

回答 1 投票 0

Android Studio:未找到“:app”的变体

我正在做我的期末项目,我想用 android studio 做项目,我真的是 android studio 的新手,我遇到了一个错误,说没有找到 ':app' 的变体 我试过改变或

回答 0 投票 0

Any/Variant 类型的类型理论

假设我有一个类型系统,除了空值外,它还具有三种原始类型: 无效的 布尔值 数 细绳 此外,每种类型都有一个类型化数组,所以我们现在有:n...

回答 1 投票 0

从 c dll 返回变体到 macOS 上的 Excel VBA

在 Paulo Bueno 的项目 https://github.com/buenop/MinXL 中,他从 C++ dll 返回一个 Variant,例如 声明 PtrSafe 函数 IncrementArrayBy _ Lib "/Library/Application Support/Microsoft/YourL...

回答 1 投票 0

如何推断存储在容器中的每个函数(在派生类上)的返回类型

我想获取存储在容器中的每个函数的返回类型。我试过 std::any 和 std::variant 但我想不通。详情如下: #包括 #包括 我想获取存储在容器中的每个函数的返回类型。我试过 std::any 和 std::variant 但我想不通。详情如下: #include <random> #include <vector> #include <functional> using namespace std; class Base { public: virtual void test() { } }; class Derived1 : public Base { public: virtual void test() { } }; class Derived2 : public Base { public: virtual void test() { } }; int main () { std::vector<std::function < Base(void)>> b; b.push_back([&]() { return Derived1(); }); b.push_back([&]() { return Derived2(); }); b.push_back([&]() { return Base(); }); std::shuffle(b.begin(), b.end(), std::default_random_engine {}); for (auto fn : b) { // Here I would like to reach the derived classes from "fn" somehow and use it like "new Derived1" //decltype(fn)::result_type ----------> this gives me Base only but i want the derived as well } } fn的类型是std::function<Base()>,因此调用fn()的结果总是一个Base。那些 std::functions 包装的 lambdas 返回其他类型并不重要。这些返回值用于初始化 Base. 类型的对象 记住,在 C++ 中,多态性仅适用于引用和指针。虽然 Base& 或 Base* 可以指代 Derived1 对象,但 Base 对象不指代任何东西。它是一个Base对象,它永远不可能是任何其他东西。 如果你想要多态性,你需要你的函数返回指针: int main () { std::vector<std::function<std::unique_ptr<Base>()>>> b; b.push_back([&]() { return std::make_unique<Derived1>(); }); b.push_back([&]() { return std::make_unique<Derived2>(); }); b.push_back([&]() { return std::make_unique<Base>(); }); std::shuffle(b.begin(), b.end(), std::default_random_engine {}); for (auto fn : b) { fn()->test(); // Will call the correct overridden test // depending on the runtime type of the // object pointed to by the returned unique_ptr } } 我已经设法解决了这两种不同的方式。 第一种方式: int main() { std::vector<std::function<Base& ()>> b; b.push_back([]() -> Base& { static Derived1 d1; return d1; }); b.push_back([]() -> Base& { static Derived2 d2; return d2; }); b.push_back([]() -> Base& { static Base b; return b; }); std::shuffle(b.begin(), b.end(), std::default_random_engine{}); for (auto& fn : b) { if (auto derived2_ptr = dynamic_cast<Derived1*>(&fn())) { derived2_ptr->test(); Derived1* var = new Derived1(*derived2_ptr); var->test(); } else if (auto derived2_ptr = dynamic_cast<Derived2*>(&fn())) { derived2_ptr->test(); Derived2* var = new Derived2(*derived2_ptr); var->test(); } } return 0; } 第二种方式: int main() { std::vector<std::function<std::shared_ptr<Base>()>> b; b.push_back([&]() { return std::make_shared<Derived1>(); }); b.push_back([&]() { return std::make_shared<Derived2>(); }); b.push_back([&]() { return std::make_shared<Base>(); }); std::shuffle(b.begin(), b.end(), std::default_random_engine{}); for (auto fn : b) { if (auto derived1_ptr = std::dynamic_pointer_cast<Derived1>(fn())) { derived1_ptr->test(); shared_ptr<Derived1> var = std::make_shared<Derived1>(*derived1_ptr); var->test(); } else if (auto derived2_ptr = std::dynamic_pointer_cast<Derived2>(fn())) { derived2_ptr->test(); shared_ptr<Derived2> var = std::make_shared<Derived2>(*derived2_ptr); var->test(); } } return 0; }

回答 2 投票 0

变体类型的对象数组元素由 With 语句释放

如果对象数组被声明为 Variant 类型(以便轻松检查它是否使用 IsEmpty 函数初始化),那么,如果随后定义的数组元素被引用为...

回答 1 投票 0

Delphi XE4如何计算变量类型值

我写了一个解析器,它接受一个变体数组,并根据类型创建一个字符串。 我使用这个字符串作为 SQL 请求的基础。 阅读文档:https://docwiki.embarc...

回答 1 投票 0

使用 std::get 进行运行时索引

我正在尝试将变体向量可变地转换为向量元组(即,我想将以下代码分解为可变参数模板 std::variant)。 std::向量 我正在尝试将 vectors 的 variant 可变地转换为 tuples 的 vector(即我想将以下代码分解为可变参数模板 std::variant<Ts...>)。 std::vector<std::variant<float, int>> vector_of_variants; vector_of_variants.emplace_back(1); vector_of_variants.emplace_back(2.f); std::tuple<std::vector<float>, std::vector<int>> result; for (auto& el : vector_of_variants) { auto index = el.index(); std::get<index>(result).pushback(std::get<index>(el)); // error: index is runtime value } 但是,std::get<index>(result).pushback(std::get<index>(el)); 行显然行不通,我需要用一些 std::visit 之类的行为替换它(即生成行 tuple_size 次并在运行时委托)。 符合人体工程学的方法是什么? 假设您已保证变体中的相应索引和result 匹配,类似下面的内容应该适用于天真的实现。可能不是最好的表现: [&]<std::size_t... Is>(std::index_sequence<Is...>){ (index == Is && std::get<Is>(result).push_back(std::get<Is>(el)), ...); }(std::make_index_sequence<std::tuple_size_v<decltype(result)>>{});

回答 1 投票 0

液体:显示特定产品变体的文字

你能帮我弄清楚如何显示特定变体的通知吗? 如果客户选择“iPhone 14”显示通知“这是预购”并隐藏此消息,如果

回答 3 投票 0

如何在 C++ 中将指针或 unique_ptr 初始化为变体

我正在分析一个或多个从二进制文件加载的大型数据表中的列。每列都可以是几种预定义类型之一,本质上是一个向量。我将列定义为变量...

回答 1 投票 0

如何在C++17中使用“变体”和“访问”?

我需要在 A、B、C 类上测试 a()、b()、c()。最简单的使用方法是要求 3*3 if-else。我想尝试 3+3 if-else。 A类 { ... 民众: 诠释 k(){...}; ... }; B类 { ... ...

回答 1 投票 0

使用 std::visit 对已删除函数进行专门化

我正在尝试根据一些先验知识来解析字符串。 str 被传递给 convert() 并为我想要支持的类型重载,并尝试使用 std::visit() 调用正确的 ove ...

回答 1 投票 0

如何基于 std::variant 创建可调用数组

我如何创建一个基于 std::variant 的函数数组,它由一些消息类型组成,它们将从 io 字节中解码,以便我可以快速访问正确的函数...

回答 3 投票 0

Vba 到具有变量 SheetName 的 Vlookup

以下代码部分应使用变量 sheetname 执行 Vlookup。但是,考虑到查找范围具有

回答 1 投票 0

Vlookup with variable sheet name vba

我正在编写代码,一切正常,但我需要从具有相同结构的变量表名称中设置 vlookup 值 我尝试了很多语法但没有使用任何建议。 这部分...

回答 0 投票 0

分别提供两个变体对象与在数组中提供的区别

我有两个以下类型的变体对象 结构 FigureMove {}; 结构 PieceMove {}; 使用 Move = std::variant; 我想为一个函数提供两个 Move 对象 ...

回答 0 投票 0

如何在一个变量中插入每个数据类型的多个项目?

我可以将每个数据类型的1个项目存储在一个变量中,像这样: using var_t = variant 然后,像这样:矢量 example1 = {1, 1.2f, 345l, 67...。

回答 1 投票 0

Delphi - 为什么使用VarArrayPut?

我是用Delphi Rio来控制Excel的。我正在读写整个列,所以我使用VarArrayCreate来创建一个变体数组来读取一列的数据。我更新特定 ...

回答 1 投票 0

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