2013-07-15 2 views
0

У меня возникла небольшая проблема с моей программой C++/CLI.Ошибка C2440 '=': невозможно преобразовать из 'cli :: array <Type> ^' to 'wchar_t'

У меня есть несколько Char массивов, которые работают без проблем.

Header1:

ref class _CGuid{ 
     static const int CIDGR=37; 
     public: 
     array<Char>^ cGuid; 
     array<Char>^ cUuid; 

      } 

CPP1 -> 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++; 

Эта линия получает ошибку :

error C2440: '=' : cannot convert from cli::array<Type> ^ to wchar_t

with 
    [ 
     Type=wchar_t 
    ] 

There is no context in which this conversion is possible

Так что я действительно не знаю, в чем проблема.

+0

Таким образом, вы пытаетесь установить одну позицию в ' mac' с целым массивом? Сообщение об ошибке имеет смысл, но чего вы пытаетесь достичь? –

+0

Правильно отформатируйте исходный код, чтобы повысить удобочитаемость. –

+0

Вы не можете сохранить адрес mac в Char. Не в массиве Char тоже, Char * не * эквивалентен байту в управляемом коде, который работает только на C.Перейдите в список «Список ^> ^', список массивов байтов. –

ответ

1

Ошибка на самом деле говорит об этом. ToCharArray возвращает array<Char>, который вы пытаетесь присвоить одному Char (= wchar_t) при доступе к mac[k].

Вместо этого вы могли бы назначить mac?

mac = tmac->ToCharArray(); 

Если это так, то эта строка является избыточным:

mac = gcnew array<Char>(100); 

Здесь вы выделяете память для mac, который вы позже выбросить, когда вы переназначить mac.

+0

спасибо 4 ваши ответы. Я хочу иметь поле (mac), которое может сохранить до 100 адресов Mac. – Angl0r

0

здесь вы копируете массив CLI, исходящий из «ToCharArray» в 1 wchar_t массива Mac!

mac[k]=tmac->ToCharArray(); <-------- Error Line 

как вы хотите массив MAC-адрес вы должны передать его с

mac = gcnew array<array<Char> >(100); 

так что теперь вы можете повлиять на макинтош [к]

+0

Я хочу создать поле, которое может сэкономить до 100 компьютеров Mac. (например, как поле имени). Проблема в том, что мне нужно «вернуть», например, 20 компьютеров Mac, сохраненных в Mac arry – Angl0r

+0

, обновленных .... но на самом деле вы ошиблись в распределении – alexbuisson

Смежные вопросы