gpt4 book ai didi

.net - C++/CLI 堆栈语义等效于 C# 的现有对象 using 语句?

转载 作者:行者123 更新时间:2023-12-04 14:05:41 33 4
gpt4 key购买 nike

我知道 C++/CLI 相当于这个 C# 代码:

using (SomeClass x = new SomeClass(foo))
{
// ...
}

这是:
{
SomeClass x(foo);
// ...
}

但是有没有类似的简洁和类似 RAII 的方式来表达这一点:
using (SomeClass x = SomeFunctionThatReturnsThat(foo))
{
// ...
}

或者:
SomeClass x = SomeFunctionThatReturnsThat(foo);
using (x)
{
// ...
}

?我最接近的工作示例是这样的:
SomeClass^ x = SomeFunctionThatReturnsThat(foo);
try
{
// ...
}
finally
{
if (x != nullptr) { delete x; }
}

但这似乎没有那么好。

最佳答案

msclr::auto_handle<> 是托管类型的智能指针:

#include <msclr/auto_handle.h>

{
msclr::auto_handle<SomeClass> x(SomeFunctionThatReturnsThat(foo));
// ...
}

// or

SomeClass^ x = SomeFunctionThatReturnsThat(foo);
{
msclr::auto_handle<SomeClass> y(x);
// ...
}

关于.net - C++/CLI 堆栈语义等效于 C# 的现有对象 using 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562109/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com