C++ cli C++/CLI I可以';I don’我不能把一个类添加到我的集合中
我试图简单地将FilterInfo类添加到我的FilterInfo集合中。我花了很长时间试图理解为什么以下代码不断抛出错误: 系统::集合::通用::列表::添加' :无法从转换参数1 'Ziz::FilterInfo*'到 “Ziz::FilterInfo” 我只是在学习C++/CLI,因为我是一名C#开发人员,我相信这很简单,但我肯定可以使用一些指针。我的代码如下:C++ cli C++/CLI I可以';I don’我不能把一个类添加到我的集合中,c++-cli,C++ Cli,我试图简单地将FilterInfo类添加到我的FilterInfo集合中。我花了很长时间试图理解为什么以下代码不断抛出错误: 系统::集合::通用::列表::添加' :无法从转换参数1 'Ziz::FilterInfo*'到 “Ziz::FilterInfo” 我只是在学习C++/CLI,因为我是一名C#开发人员,我相信这很简单,但我肯定可以使用一些指针。我的代码如下: public value class FilterInfo { public:
public value class FilterInfo
{
public:
char* Address;
};
public ref class Ziz
{
private:
List<FilterInfo>^ _blockList;
public:
// Constructor
Ziz(){
_blockList = gcnew List<FilterInfo>();
}
List<FilterInfo>^ GetBlockList()
{
for each(_IPFILTERINFO ip in _packetFilter->GetBlockList())
{
// _IPFILTERINFO is the native C++ struct.
FilterInfo* f = new FilterInfo();
_blockList->Add(f);
}
return _blockList;
}
公共值类过滤器信息
{
公众:
字符*地址;
};
公共参考类Ziz
{
私人:
列表^区块列表;
公众:
//建造师
Ziz(){
_blockList=gcnewlist();
}
列表^GetBlockList()
{
对于每个(\u packetFilter->GetBlockList()中的\u IPFILTERINFO ip)
{
//IPIPFLTENFILL是本机C++结构。
FilterInfo*f=新的FilterInfo();
_区块列表->添加(f);
}
返回块列表;
}
你也必须用gcnew
构建你的FilterInfo
。你不能不封送就把它们混合在一起。你也必须用gcnew
构建你的FilterInfo
你不能不封送就把它们混合在一起。FilterInfo
不是tFilterInfo*
。如果您想要一个指向FilterInfo的指针列表,您需要说List
。因为FilterInfo在这里是一个值类,但您可能只想跳过新建的
FilterInfo fi;
_blockList->Add(fi);
FilterInfo
不是FilterInfo*
。如果你想要一个指向FilterInfo的指针列表,你需要说List
。因为FilterInfo在这里是一个值类,尽管你可能只想跳过新建的
FilterInfo fi;
_blockList->Add(fi);
您已将_blockList声明为
List<FilterInfo>^ _blockList;
它无法工作,因为一个是指针,另一个是引用
我不确定“价值”是如何体现的,但我知道
public value class FilterInfo
{
public:
char* Address;
};
在声明非托管类之前,您将被撤销
要管理它,您应该使用
public ref class FiterInfo
这将允许您使用FilterInfo*,而无需明确管理内存
最后,char*在C++/CLI中并不是很好,我建议使用您声明为_blockList的System::String
List<FilterInfo>^ _blockList;
_blockList->Add(*f);
它无法工作,因为一个是指针,另一个是引用
我不确定“价值”是如何体现的,但我知道
public value class FilterInfo
{
public:
char* Address;
};
在声明非托管类之前,您将被撤销
要管理它,您应该使用
public ref class FiterInfo
这将允许您使用FilterInfo*,而无需明确管理内存
最后,char*在C++/CLI中不是很好,我建议使用System::String
_blockList->Add(*f);
{
})
int main(数组^args)
{
控制台::WriteLine(L“Hello World”);
ICollection ^oCollection=gcnew List();
o收集->添加(gca());
返回0;
}
{
})
int main(数组^args)
{
控制台::WriteLine(L“Hello World”);
ICollection ^oCollection=gcnew List();
o收集->添加(gca());
返回0;
}