我的C ++ / CLI程序有点问题。
我有几个Char
阵列可以毫无问题地工作。
头1:
ref class _CGuid{
static const int CIDGR=37;
public:
array<Char>^ cGuid;
array<Char>^ cUuid;
}
Cpp1 - &gt; contruktor:
cGuid = gcnew array<Char>(CIDGR);
一些功能:
_CGuid::Type(String^ tmpname,String^ tmpid)
{
pcName=tmpname;
cUuid=tmpid->ToCharArray();
}
所以这个作品对我来说非常好,没有错误。 但是不的工作原理:
其他标题:
ref class CStorage{
public:
array<String^>^ names;
array<Char>^ mac;
其他contruktor
names = gcnew array<String^>(100);
mac = gcnew array<Char>(100);
一些功能2:
names[k]=tname;
mac[k]=tmac->ToCharArray(); <-------- Error Line
k++;
这一行出错:
错误C2440:'=':无法从
cli::array<Type> ^
转换为wchar_t
with [ Type=wchar_t ]
没有可以进行此转换的上下文
所以我真的不知道这里的问题是什么。
答案 0 :(得分:1)
错误说明了一切,实际上。 ToCharArray
会返回array<Char>
,您在访问Char
时会尝试将其分配给单个wchar_t
(= mac[k]
。
您是否可能想要分配给mac
?
mac = tmac->ToCharArray();
如果是这样,那么这一行就是多余的:
mac = gcnew array<Char>(100);
在这里,您为mac
分配内存,以后在重新分配mac
时会丢弃该内存。
答案 1 :(得分:0)
在这里你复制一个来自“ToCharArray”的CLI数组,位于Mac阵列的1个wchar_t中!
mac[k]=tmac->ToCharArray(); <-------- Error Line
如果你想要一个Mac地址数组,你必须用
分配它 mac = gcnew array<array<Char> >(100);
所以现在你可以影响mac [k]