C++ cli 如何将可选项与托管类型一起使用
我想创建一个可能存在异常的函数,如果是这种情况,则返回可选的 下面是一个小代码示例C++ cli 如何将可选项与托管类型一起使用,c++-cli,clr,C++ Cli,Clr,我想创建一个可能存在异常的函数,如果是这种情况,则返回可选的 下面是一个小代码示例 optional<Exception^> opt; if (opt) MessageBox::Show("Error"); 可选选项; 如果(选择) MessageBox::显示(“错误”); 我得到以下错误: 错误C3265无法在非托管中声明托管“\u值” 'std::_Optional_destruct_base::$UnnamedClass$0x61
optional<Exception^> opt;
if (opt)
MessageBox::Show("Error");
可选选项;
如果(选择)
MessageBox::显示(“错误”);
我得到以下错误:
错误C3265无法在非托管中声明托管“\u值”
'std::_Optional_destruct_base::$UnnamedClass$0x61d94762$23$'CLR d:\visualstudio\vc\tools\msvc\14.16.27023\include\Optional 87
错误C2848'std:_可选_自毁_基::_值]:a
托管类型不能是
联合CLR d:\visualstudio\vc\tools\msvc\14.16.27023\include\optional 87
错误C3699'&&':无法对类型使用此间接寻址
“\u Ty”CLR d:\visualstudio\vc\tools\msvc\14.16.27023\include\optional 431
错误C3699'&&':无法对类型“const”使用此间接寻址
_Ty'CLR d:\visualstudio\vc\tools\msvc\14.16.27023\include\optional 435
错误C3699'&&':无法对类型使用此间接寻址
“\u Ty”CLR d:\visualstudio\vc\tools\msvc\14.16.27023\include\optional 467
错误C3699'&&':无法对类型“const”使用此间接寻址
_Ty'CLR d:\visualstudio\vc\tools\msvc\14.16.27023\include\optional 476
那么我如何使用可选的?在C++ CLI中有可能吗?有哪些替代方案?我对std::optional的理解是,它是一种可能不包含值的值类型,因为某些操作失败。Net处理此类故障的标准方法是抛出异常或让异常传播出去。然而,听起来你不想这样做,所以这里有一些替代方案 对于.Net引用类型(在C#中声明为
class
,在C++/CLI中声明为ref class
或ref struct
,在C++/CLI中使用^
),处理此问题的方法只是返回nullptr
。引用类型很少按值存储,返回null更为标准
对于.Net值类型(在C#中声明为
struct
,在C++/CLI中声明为value class
或value struct
,在C++/CLI中使用时不使用^
),我将使用。Nullable是一种类似于Optional的类型,其中值类型允许为null。我对std::Optional的理解是,它是一种可能不包含值的值类型,因为某些操作失败。Net处理此类故障的标准方法是抛出异常或让异常传播出去。然而,听起来你不想这样做,所以这里有一些替代方案
对于.Net引用类型(在C#中声明为class
,在C++/CLI中声明为ref class
或ref struct
,在C++/CLI中使用^
),处理此问题的方法只是返回nullptr
。引用类型很少按值存储,返回null更为标准
对于.Net值类型(在C#中声明为
struct
,在C++/CLI中声明为value class
或value struct
,在C++/CLI中使用时不使用^
),我将使用。NulLable是一个类似于可选的类型,其中允许C++的值类型为null。< /P>如果询问C++和CLI,考虑标记。如果询问C++/CLI,考虑标记。