我已经为我的程序添加了一个类并进行了测试.我真的很惊讶有任何真正的错误.这是代码:
#pragma once
#include "Iingredient.h"
#include <string>
#include <vector>
using namespace std;
ref class Recipe{
private:
string partsName;
vector<Iingredient> ing;
public:
Recipe(){}
};
Run Code Online (Sandbox Code Playgroud)
以下是错误:
错误23错误C4368:无法将'partsName'定义为托管'Recipe'的成员:不支持混合类型c:\ users\user\documents\visual studio 2010\projects\smestras2_l1\Recipe.h 10 1 file2_L1
错误24错误C4368:无法将'ing'定义为托管'Recipe'的成员:不支持混合类型c:\ users\user\documents\visual studio 2010\projects\smestras2_l1\Recipe.h 11 1 file2_L1
我google了一下,发现它有关托管和非托管代码.如何解决这个问题?它是否与manged和非托管代码相关?如果是这样的话?
svi*_*ick 12
我同意其他人的观点:在大多数情况下你不应该使用C++/CLI,你应该使用C#(或其他"普通"托管语言)(假设你想编写一个.Net应用程序).C++/CLI主要用于特殊情况,例如托管代码和非托管代码之间的互操作.
如果您确定要使用C++/CLI,则不能将本机类放入托管类.但是你可以在那里指向本机类:
ref class Recipe{
private:
string* partsName;
vector<Iingredient>* ing;
};
Run Code Online (Sandbox Code Playgroud)
上面的代码有效.但是你必须记住,那些是正常的本机C++指针,这意味着你必须手动delete
它们.要执行该属性,您应该阅读有关析构函数和终结器如何在C++/CLI中工作的内容.