gpt4 book ai didi

ado.net - 不能在引用类型上使用 'new';使用 'gcnew' 代替?在VS 2005中

转载 作者:行者123 更新时间:2023-12-02 15:53:42 25 4
gpt4 key购买 nike

我使用的是 C++ 语言,当我尝试创建一个简单的 DataTable 对象时,出现了一个奇怪的错误,它给出了错误

System::Data::DataTable* myDataTable = new DataTable();

即使我尝试过这个 System::Data::DataTable myDataTable = new DataTable();出现以下错误请帮忙。

错误 C2750:“System::Data::DataTable”:无法在引用类型上使用“new”;使用“gcnew”代替错误 C2440:“初始化”:无法从“System::Data::DataTable *”转换为“System::Data::DataTable ^

最佳答案

您使用的语言称为 C++/CLI ,而不是普通的 C++。在 C++/CLI ,您可以访问 .NET 内容,例如 DataTable。语义与原始指针有点不同:

DataTable^ myDataTable = gcnew DataTable;

^”表示 managed handle 。在底层,它是一个指向 GC 堆上对象的指针。您不能对托管句柄进行指针算术。您不能手动删除它们。 GC 会处理它们。除非明确固定对象,否则还可以自由移动对象。 gcnew用于在托管堆上分配对象。它返回一个句柄,而不是原始指针。您无法使用 new 在非托管 C++ 堆上创建 .NET 引用类型。

关于ado.net - 不能在引用类型上使用 'new';使用 'gcnew' 代替?在VS 2005中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327826/

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