problem mit arrays
-
hallo, ich beschäftige mich erst seit kurzem mit c++/cli, und versuche zur zeit eine klassenbibliothek zu schreiben, die später von meiner exe genutzt wird. Um ein mehrdimensionales array zu definieren, schreib ich in ner konsolenanwendung
int myarr[8][8];
jetzt versuch ich das gleiche in ner klassenbibliothek, und der compiler gibt mir als fehlermeldung aus, ich darf keine nativen arrays in managed code verwenden, wenn ich in der exe so was versuche, funktionierts, ohne fehlermeldung. warum ist das so? wie kann ich ein mehrdimensionales array definieren für die klassenbibliothek? kann mir jemand ein kleines codebeispiel schreiben?
vielen dank im vorraus
-
int myarr[8][8];
ist natives C++
deine Klassenbibliothek verlangt aber "managed Code", da ist die Syntax zur Arraydeklaration anders:
array<[TYPQUALIFIZIERER]TYP [, ANZAHLDERDIMENSIONEN]>^ MyArray;
also dein Integerarray sieht dann so aus:
array<Int32, 2>^ myarr = gcnew array<Int32, 2>(8, 8);
später greifst du dann so drauf zu:
myarr[2, 3] = 10;
-
und wenn ich das zu doof erklärt hab, das sagt MSDN:
MSDN schrieb:
The array keyword lets you create a dynamic array that is allocated on the common language runtime heap.
[qualifiers] [cli::]array<[qualifiers]type1[, dimension]>^ var =
gcnew [cli::]array<type2[, dimension]>(val[,val...])Parameters
dimension [optional]
The number of dimensions of the array. The default is 1. The maximum is 32.qualifiers [optional]
A storage class specifier. Valid keywords for qualifier are: mutable, volatile, const, extern, and static.val
A comma-separated list of the size of your array or an aggregate initializer.There should be one size val for each dimension. For more information, see Multidimension Arrays.
type1
The type of the array variable. Valid types are managed reference types (type^), managed value types (type), and native pointers (type*). A tracking handle is always required after the closing angle bracket (>) in the declaration.type2
The type of the values initializing the array. Commonly, type1 and type2 will be the same types. However, it is possible for the types to be different, as long as there is a conversion from type2 to type1. For example, if type2 is derived from type1.Like type1, valid types are managed reference types, managed value types, and native pointers. However, a tracking handle is not allowed after the closing angle bracket (>).
var
The name of the array variable.