托管 c++ 的__typeof和__gc的 C++ CLI 等效项是什么?



我正试图将旧的c++项目从VS2003转换为VS2019。我了解到,这其中的一部分是从托管c++转向c++ CLI,因为托管c++很快就被抛弃了。

我管理的大部分,但我似乎不能找出什么替代__typeof关键字。有人顺便来吗?请参阅下面的代码片段,了解它是如何使用的。

private: System::ComponentModel::IContainer ^  components;
private:
void InitializeComponent(void)
{
this->components = gcnew System::ComponentModel::Container();
System::Resources::ResourceManager ^  resources = gcnew System::Resources::ResourceManager(__typeof(USB::Form1));
.
.
.
}

此外,还有另一个重复出现的标识符__gc,我已经找到了一些关于它的更多信息,但我不确定我是否理解用什么来代替它。

Char chars __gc[] = gcnew Char __gc[bytes->Length * 2];
Char hexDigits __gc[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
bool ImageNumberUsed __gc[];

有没有人很好地掌握了这一点,知道上面的上下文给出了什么适当的转换?

我不能说我使用过很多Managed c++,但我可以说出c++/CLI的等同物是什么。

  • __typeof(type)—>type::typeid
    • 访问typeid,就好像它是给定类型的静态字段或属性。
    • 返回System::Type^类型的对象。
    • 示例:gcnew System::Resources::ResourceManager(USB::Form1::typeid);
  • __gc[]—>类cli::array
    • cli::array是一个成熟的托管类型。您可以使用gcnew创建它,使用^声明变量,等等。
    • cli::array对数组中存储的对象类型和数组的维数(默认为1)是通用的。数组的大小通过构造函数参数指定(使用括号,而不是方括号)。
    • 变量用类型名称cli::array声明。方括号用于读取&写值,不是为了声明类型,也不是为了创建数组。
    • 如果数组中的类型是托管引用类型,则需要在泛型类型中包含^。示例:cli::array<String^>^ foo = ...
    • 例子:
      • cli::array<System::Char>^ chars = gcnew cli::array<System::Char>(bytes->Length * 2);
      • cli::array<System::Char>^ hexDigits = { '0', '1', .... };
        • (我喜欢说系统。Char,作为额外的提醒,它与小写的char不同。)
      • cli::array<bool>^ ImageNumberUsed;(未初始化或未赋值)
      • 二维:cli::Array<String^, 2>^ stringGrid = gcnew cli::Array<String^, 2>(10, 10);
  • 最新更新