gpt4 book ai didi

c++-cli - C++混合管理

转载 作者:行者123 更新时间:2023-12-03 18:20:12 25 4
gpt4 key购买 nike

我在我的程序中添加了一个类并对其进行了测试。我真的很惊讶有任何真正的错误。这是代码:

#pragma once
#include "Iingredient.h"
#include <string>
#include <vector>

using namespace std;

ref class Recipe{
private:
string partsName;
vector<Iingredient> ing;
public:
Recipe(){}

};

以下是错误:

Error 23 error C4368: cannot define 'partsName' as a member of managed 'Recipe': mixed types are not supported c:\users\user\documents\visual studio 2010\projects\smestras2_l1\Recipe.h 10 1 file2_L1

Error 24 error C4368: cannot define 'ing' as a member of managed 'Recipe': mixed types are not supported c:\users\user\documents\visual studio 2010\projects\smestras2_l1\Recipe.h 11 1 file2_L1



我用谷歌搜索了一下,发现它是关于托管和非托管代码的。
如何解决这个问题?它是否与托管和非托管代码有关?如果是这样怎么办?

最佳答案

我同意其他人的看法:在大多数情况下你不应该使用 C++/CLI,你应该使用 C#(或另一种“普通”托管语言)(假设你想编写一个 .Net 应用程序)。 C++/CLI 主要用于特殊情况,例如托管和非托管代码之间的互操作。

如果您确定要使用 C++/CLI,则不能将 native 类放入托管类中。但是你可以把指向本地类的指针放在那里:

ref class Recipe{
private:
string* partsName;
vector<Iingredient>* ing;
};

上面的代码有效。但是你必须记住,那些是普通的本地 C++ 指针,这意味着你必须手动 delete他们。要实现该属性,您应该阅读有关析构函数和终结器在 C++/CLI 中如何工作的信息。

关于c++-cli - C++混合管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283383/

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