错误C2440'=':无法从'cli :: array <type> ^'转换为'wchar_t'</type>

时间:2013-07-15 12:22:35

标签: c++ .net c++-cli

我的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
  ]
     

没有可以进行此转换的上下文

所以我真的不知道这里的问题是什么。

2 个答案:

答案 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]