Cas*_*ash 6 string managed-c++ c++-cli reference
为什么Microsoft的C++/CLI不允许我通过引用传递字符串?我收到以下错误:
C3699:'&':不能在类型'System :: String'上使用此间接
Ðаn*_*Ðаn 30
首先,实际上有两种针对.NET的Microsoft特定C++方言:较旧的"Managed C++"(Visual Studio 2002和2003)和C++/CLI(Visual Studio 2005及更高版本).
在C++/CLI中,System::String^
是对字符串的.NET引用; 一些作者称这是一个"跟踪指针"来比较和对比普通的C++指针.与在C++中一样,您可以"通过引用"传递.NET引用,但不使用&
,而是使用%
,如:
void makeStr(System::String^ %result) {
result = gcnew System::String("abc");
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ter 11
听起来像是在使用Managed C++,这是一个与.NET Framework一起使用的混合C++.
在Managed C++中,我相信您正在寻找的语法是System::String^
.这样做的原因是,由于托管类型是由.NET Framework收集的,因此您不能创建"常规"引用,因为GC需要跟踪对特定变量的所有引用,以了解何时可以安全地释放它.
归档时间: |
|
查看次数: |
9239 次 |
最近记录: |