error C2664: Konvertierung 'cli::array<Type> ^' in 'cli::array<Type,dimension> ^' nicht möglich
-
Hallo ich hab da ein kleines Problem...
Ich habe ein .NET C# struct:
public struct t_Data { public String m_sAtt; public String m_sField; public int m_iIdx; }
Und eine Methode, die u.a. ein Array dieses Structs erwartet:
public static int Init( t_Data[] aData ){}
In meiner C++/CLI Warapper-Klasse habe ich die .NET-dll eingebunden und kann deren Methoden auch wunderbar nutzen. Nun habe ein Array:
array<abc::Example::t_Data^>^ arData = gcnew array<abc::Example::t_Data^>(list.size());
abc::Example stellt den Namespace in meiner .NET-dll dar. Dem Array habe ich ein paar Werte hinzugefügt, um anschließend der .NET-Funktion zu übergeben, was folgende Fehlermeldung produziert:
error C2664: 'abc::Example::Init': Konvertierung des Parameters 1 von 'cli::array<Type> ^' in 'cli::array<Type,dimension> ^' nicht möglich 1> with 1> [ 1> Type=abc::Example::t_Data ^ 1> ] 1> and 1> [ 1> Type=abc::Example::t_Data, 1> dimension=1 1> ]
Wer kann helfen?
-
array<abc::Example::t_Data^, 1>^ arData = gcnew array<abc::Example::t_Data^, 1>(list.size());
vielleicht?
-
Auf die Idee bin ich auch schon gekommen und habs trotzdem nochmal probiert, mit folgender Fehlermeldung:
error C2664: 'abc::Example::t_Data': Konvertierung des Parameters 1 von 'cli::array<Type,dimension> ^' in 'cli::array<Type,dimension> ^' nicht möglich 1> with 1> [ 1> Type=abc::Example::t_Data::t_Data ^, 1> dimension=1 1> ] 1> and 1> [ 1> Type=abc::Example::t_Data::t_Data, 1> dimension=1 1> ] 1> 1>Fehler beim Erstellen
Weitere Vorschläge?
-
Warum eigentlich t_Data**^**? Das ist doch ein
struct
, also ein Werttyp.
-
Okay, dann eben folgendermaßen:
array<Type=abc::Example::t_Data, 1>^ arData = gcnew array<Type=abc::Example::t_Data>(list.size());
Was leider dazu führt:
error C2440: '=': 'abc::Example::t_Data ^' kann nicht in 'abc::Example::t_Data' konvertiert werden 1> Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder 1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
Langsam bin ich ein wenig ratlos...
-
Ahoi,
da habe ich mich doch direkt mal hier im Forum registriert.
Ich habe die Lösung gefunden und zwar muss es folgendermaßen aussehen:array<Type=abc::Example::t_Data>^ arData = gcnew array<Type=abc::Example::t_Data>(list.size());
-
Das geht aber auch einfacher:
auto ar = gcnew array<DateTime>(12);