c++ cli - Returning to C++

c++ cli - Returning to C++

本文关键字:to C++ Returning cli c++      更新时间:2023-10-16

我最后一次使用c++是在它可以管理之前。但是,最近我从Java返回,看到c++现在可以管理了!

没过多久我就意识到gcnew^的用途。然而,我对容器有点困惑。

如何创建一个容器,它的元素是我自己创建的托管类?我正在寻找一个类似于STL vector的容器。

我想要这样的东西:

List<MyClass ^> ^ mylist;

但是Visual Studio返回以下错误:

Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error   3   error C2238: unexpected token(s) preceding ';'
Error   1   error C2143: syntax error : missing ';' before '<'

我最后一次使用c++是在它可以管理之前。但是,最近我从Java返回,看到c++现在可以管理了!

c++不能"被管理"。你现在看到的是三种语言:

  1. c++(你会回来的)。

  2. Managed c++ (MC++)——这是第一个被微软改变为一种新语言的c++版本,能够在本地代码(普通c++)和。net平台(Managed)上工作。这已经被Microsoft弃用,并被c++/CX所取代。因此,不要编写mc++代码。

  3. c++/CX——这是微软为。net互操作性而修改的c++的最新版本。当您需要编写与托管(即,在。net运行时托管/运行)和非托管代码交互的代码时,可以使用它。

无论哪种方式,要编译您的代码,您需要启用托管代码(/CLR)和以下更改的编译器开关:

  • 定义你的类为c++/CX类(使用ref关键字)。
  • 从集合中导入列表(你将有效地使用。net集合)
  • ref new分配一切(类似于Java和。net)。

也就是说,除非你正在使用MS . net平台编写托管和非托管代码之间的互操作代码,否则不要使用c++/CLI。使用c++编写非托管代码,使用c#或VB编写托管代码。这样你就不会那么头疼了。