casting 相关问题

如果允许转换,则转换是将对象类型显式转换为另一种类型的过程。这个过程可能会导致价值的变化。

将指针列表转换为 C++ 中的常量指针列表

我有一个类需要构建/维护指向对象的指针列表,但随后应该返回一个常量列表以指向相同数据的常量指针。 所以像这样: 类 Foo { 私人的: ...

回答 1 投票 0

我可以对 Typescript 中的变量进行类型断言,使其对整个块/函数有效吗?

我有一个类型为 null 的状态变量 | SOME_TYPE。但有些函数期望它是 SOME_TYPE,并且这些函数 100% 确定运行时状态变量将是 SOME_TYPE。 我可以吗

回答 4 投票 0

有此类类型转换的文档吗?

A类{ 整数b; 整数c; A(这个.b,这个.c); } void testFunc(对象参数) { print((参数为A).b); 打印(参数.c); //某处有文档吗?为什么不需要类型转换? ...

回答 1 投票 0

为什么不带参数的 `emplace()` 返回 0? [重复]

下面是示例代码片段: #包括 #包括 int main() { std::可选检查= 200; std::cout << check << std::end...

回答 2 投票 0

这些关于Java中“选中”和“未选中”缩小引用转换的解释对吗?

我正在学习Java中的“未检查”和“检查”缩小引用转换。不幸的是,关于该主题的文档并不多(我只在 Java SE 11 Oracal 文档中找到它们)...

回答 1 投票 0

C# - 使用反射进行动态转换

我正在尝试从数据表对象中提取值并动态填充用于Web服务调用的对象,我尝试了一些方法,但将范围缩小到了这一点,它似乎缺少什么......

回答 4 投票 0

C++ 基于子类型动态转换结构

所以我目前正在尝试创建自己的实体组件架构,但遇到了一些问题。 我将我的组件存储为结构,例如 结构体基础组件 { bool 是否有效; } 结构

回答 4 投票 0

当我尝试读取 `std::Optional<unsigned>` 变量时,为什么不带参数的 `emplace()` 返回 0? [重复]

下面是示例代码片段: #包括 #包括 int main() { std::可选检查= 200; std::cout << check << std::end...

回答 2 投票 0

如何使用`emplace()`读取`std::Optional<unsigned>`变量? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号? #包括 #包括 int main() { 标准::可选 有没有办法将typecast可选的无符号std::optional<unsigned>变量转换为无符号? #include <optional> #include <iostream> int main() { std::optional<unsigned> check = 200; std::cout << check << std::endl; std::cout << check.emplace() << std::endl; return 0; } 在上面的函数中,当我尝试打印check(可选变量)时,出现以下错误: main.cpp: In function ‘int main()’: main.cpp:15:15: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream’} and ‘std::optional’) 15 | std::cout << check << std::endl; | ~~~~~~~~~ ^~ ~~~~~ | | | | | std::optional<unsigned int> | std::ostream {aka std::basic_ostream<char>} 下面是我尝试使用 emplace 打印时的结果,因为 check.emplace() 是: #include <optional> #include <iostream> int main() { std::optional<unsigned> check = 200; // std::cout << check << std::endl; std::cout << check.emplace() << std::endl; return 0; } 结果: 0 ...Program finished with exit code 0 Press ENTER to exit console. 上面的例子只是为了演示我的问题。我的实际程序有 std::optional<unsigned> check 因为它是可选的默认参数。当用户传递不同的参数时,我想将 arg 传递给以 unsigned 作为参数的函数。 这些帖子: 移动可选变量的值,使用流和模板取出值,使用可选讨论上述主题。简而言之,它们都没有解释如何打印或获取optional变量的值。 有人可以解释一下上述问题以及我可以做些什么来解决它吗? std::optional 有多种方法来访问它所保存的值: operator* std::cout << *check << std::endl; value() std::cout << check.value() << std::endl; value_or() std::cout << check.value_or(0) << std::endl; 只需确保在调用 operator bool 或 has_value() 之前使用 optional 或 operator* 方法来验证 value() 是否持有值。 关于第一行: std::cout << check << std::endl; 将 std::optional 转换为其包含的值时,需要处理它为空的情况。 您可以使用 std::optional::value_or 来实现这一点。 std::optional::value_or 返回 std::optional 中的值(如果有),或者如果 std::optional 为空,则将该值作为参数传递给 value_or: std::cout << check.value_or(999) << std::endl; 这将输出: 200 (如果 999 为空,则输出将为 std::optional) 如果您确定 optional 不为空(您可以使用 operator bool 或 has_value 方法来检查这一点),您还可以使用 operator* 或使用 来获取其中包含的值value方法: if (check) // or `if (check.has_value())` { std::cout << *check << std::endl; std::cout << check.value() << std::endl; } 关于第二行: std::cout << check.emplace() << std::endl; std::optional::emplace 在 std::optional 中构造一个值,并返回对此值的引用。 不带任何参数调用 emplace 会以类似于以下方式构造 unsigned: unsigned a{}; 这使用了值初始化,对于像unsigned这样的简单类型,这实际上是零初始化。 这就是您看到打印的 0 的原因。 现场演示(双线)。

回答 2 投票 0

当我尝试读取 `std::Optional<unsigned>` 变量时,为什么不带参数的 `emplace()` 返回 0? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号? #包括 #包括 int main() { 标准::可选 有没有办法将 typecast 可选的无符号 std::optional<unsigned> 变量转换为无符号? #include <optional> #include <iostream> int main() { std::optional<unsigned> check = 200; std::cout << check << std::endl; std::cout << check.emplace() << std::endl; return 0; } 在上面的函数中,当我尝试打印check(可选变量)时,出现以下错误: main.cpp: In function ‘int main()’: main.cpp:15:15: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream’} and ‘std::optional’) 15 | std::cout << check << std::endl; | ~~~~~~~~~ ^~ ~~~~~ | | | | | std::optional<unsigned int> | std::ostream {aka std::basic_ostream<char>} 下面是我尝试使用 emplace 打印时的结果,因为 check.emplace() 是: #include <optional> #include <iostream> int main() { std::optional<unsigned> check = 200; // std::cout << check << std::endl; std::cout << check.emplace() << std::endl; return 0; } 结果: 0 ...Program finished with exit code 0 Press ENTER to exit console. 上面的例子只是为了演示我的问题。我的实际程序有 std::optional<unsigned> check 因为它是可选的默认参数。当用户传递不同的参数时,我想将 arg 传递给以 unsigned 作为参数的函数。 这些帖子: 移动可选变量的值,使用流和模板取出值,使用可选讨论上述主题。简而言之,它们都没有解释如何打印或获取optional变量的值。 有人可以解释一下上述问题以及我可以做些什么来解决它吗? std::optional 有多种方法来访问它所保存的值: operator* std::cout << *check << std::endl; value() std::cout << check.value() << std::endl; value_or() std::cout << check.value_or(0) << std::endl; 只需确保在调用 operator bool 或 has_value() 之前使用 optional 或 operator* 方法来验证 value() 是否持有值。 关于第一行: std::cout << check << std::endl; 将 std::optional 转换为其包含的值时,需要处理它为空的情况。 您可以使用 std::optional::value_or 来实现这一点。 std::optional::value_or 返回 std::optional 中的值(如果有),或者如果 std::optional 为空,则将该值作为参数传递给 value_or: std::cout << check.value_or(999) << std::endl; 这将输出: 200 (如果 999 为空,则输出将为 std::optional) 如果您确定 optional 不为空(您可以使用 operator bool 或 has_value 方法来检查这一点),您还可以使用 operator* 或使用 来获取其中包含的值value方法: if (check) // or `if (check.has_value())` { std::cout << *check << std::endl; std::cout << check.value() << std::endl; } 关于第二行: std::cout << check.emplace() << std::endl; std::optional::emplace 在 std::optional 中构造一个值,并返回对此值的引用。 不带任何参数调用 emplace 会以类似于以下方式构造 unsigned: unsigned a{}; 这使用了值初始化,对于像unsigned这样的简单类型,这实际上是零初始化。 这就是您看到打印的 0 的原因。 现场演示(双线)。

回答 2 投票 0

在运行时指定C++指针的类型(通用指针)

我正在开发完全用 C++ 编写的模拟代码,其中我们对所有计算使用双精度。现在,如果用户愿意,我想将其配置为使用单精度。问题...

回答 1 投票 0

为什么不带参数的 `emplace()` 返回 0,我们可以用它来读取 `std::Optional<unsigned>` 变量吗? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号? #包括 #包括 int main() { 标准::可选 有没有办法将typecast可选的无符号std::optional<unsigned>变量转换为无符号? #include <optional> #include <iostream> int main() { std::optional<unsigned> check = 200; std::cout << check << std::endl; std::cout << check.emplace() << std::endl; return 0; } 在上面的函数中,当我尝试打印check(可选变量)时,出现以下错误: main.cpp: In function ‘int main()’: main.cpp:15:15: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream’} and ‘std::optional’) 15 | std::cout << check << std::endl; | ~~~~~~~~~ ^~ ~~~~~ | | | | | std::optional<unsigned int> | std::ostream {aka std::basic_ostream<char>} 下面是我尝试使用 emplace 打印时的结果,因为 check.emplace() 是: #include <optional> #include <iostream> int main() { std::optional<unsigned> check = 200; // std::cout << check << std::endl; std::cout << check.emplace() << std::endl; return 0; } 结果: 0 ...Program finished with exit code 0 Press ENTER to exit console. 上面的例子只是为了演示我的问题。我的实际程序有 std::optional<unsigned> check 因为它是可选的默认参数。当用户传递不同的参数时,我想将 arg 传递给以 unsigned 作为参数的函数。 这些帖子: 移动可选变量的值,使用流和模板取出值,使用可选讨论上述主题。简而言之,他们都没有解释如何打印或获取optional variable的值。 有人可以解释一下上述问题以及我可以做些什么来解决它吗? std::optional 有多种方法来访问它所保存的值: operator* std::cout << *check << std::endl; value() std::cout << check.value() << std::endl; value_or() std::cout << check.value_or(0) << std::endl; 只需确保在调用 operator bool 或 has_value() 之前使用 optional 或 operator* 方法来验证 value() 是否持有值。 关于第一行: std::cout << check << std::endl; 将 std::optional 转换为其包含的值时,需要处理它为空的情况。 您可以使用 std::optional::value_or 来实现这一点。 std::optional::value_or 返回 std::optional 中的值(如果有),或者如果 std::optional 为空,则将该值作为参数传递给 value_or: std::cout << check.value_or(999) << std::endl; 这将输出: 200 (如果 999 为空,则输出将为 std::optional) 如果您确定 optional 不为空(您可以使用 operator bool 或 has_value 方法来检查这一点),您还可以使用 operator* 或使用 来获取其中包含的值value方法: if (check) // or `if (check.has_value())` { std::cout << *check << std::endl; std::cout << check.value() << std::endl; } 关于第二行: std::cout << check.emplace() << std::endl; std::optional::emplace 在 std::optional 中构造一个值,并返回对此值的引用。 不带任何参数调用 emplace 会以类似于以下方式构造 unsigned: unsigned a{}; 这使用了值初始化,对于像unsigned这样的简单类型,这实际上是零初始化。 这就是您看到打印的 0 的原因。 现场演示(双线)。

回答 2 投票 0

为什么不带参数的 `emplace()` 返回 0,我们可以用它来读取 `std::Optional<unsigned>` 变量吗? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号 #包括 #包括 int main() { std::可选 ...

回答 2 投票 0

为什么不带参数的 `emplace()` 返回 0 以及如何使用成员函数读取 `std::Optional<unsigned>` 变量? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号 #包括 #包括 int main() { std::可选 ...

回答 2 投票 0

为什么不带参数的 emplace() 返回 0 以及如何使用成员函数读取 `std::Optional<unsigned>` 变量? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号 #包括 #包括 int main() { std::可选 ...

回答 2 投票 0

emplace() 与 `std::Optional<unsigned>` 变量一起使用有什么用? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号 #包括 #包括 int main() { std::可选 ...

回答 2 投票 0

为什么需要定义数组 b 的元素才能获得所需的输出

我最近学习了类型转换指针。所以我尝试了一下,编写了这个糟糕的代码: #包括 int main() { 整数*一个; char b[]=“海”; a = (int*)&b; *...

回答 1 投票 0

如何在 C++ 中将可选的无符号 `std::Optional<unsigned>` 变量值类型转换为无符号/打印? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号 #包括 #包括 int main() { std::可选 ...

回答 2 投票 0

有没有办法在 C++ 中将可选的无符号 `std::Optional<unsigned>` 变量值类型转换为无符号/打印? [重复]

有没有办法将可选的无符号 std::Optional 变量类型转换为无符号 #包括 #包括 int main() { std::可选 ...

回答 2 投票 0

如何在 C 中不使用“typedef”来声明函数指针变量的类型?

我有一个名为 add 的函数,它将两个整数相加,如下所示: int add(int a, int b){ 返回a+b; } 我想创建一个指向名为 a 的函数的指针并使用它调用我的函数

回答 1 投票 0

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