Array med objekt
Hej!
Jag vill kunna deklarera en array (gärna i flera dim) med objekt och jag vill kunna göra det medan programmet körs. Tacksam för alla tips!
Svara
Sv: Array med objekt
Jag forstar inte, det ar en helt vanlig deklaration du far gora. Alla variabler skapas i run-time ingen skapas nar du skriver koden.
Du behover inte heller ha en statisk storlek pa en array du kan mycket val ha en variabel som input till din deklaration for att ange hur manga element som skall skapas. Dock kanske det ar battre att kora med pekare och allokera minne utifran hur mycket plats du behover.
// Johan
Svara
Sv: Array med objekt
Det finns två typer av flerdimensionella arrayer, "vanliga" och jagged. En "vanlig" array deklareras :
1 | typ[,] MyArray= new typ[8,10]; |
och motsvarar då en 8*10 elements array. En motsvarande Jagged array deklareras :
1 2 3 4 | typ[][] MyArray= new typ[3][]; MyArray[0]= new typ[1]; MyArray[1]= new typ[2]; MyArray[2]= new typ[3]; |
Detta blir alltså en "triangel"-array med 6 element. Första raden har 3 element, andra 2 och sista 1 element.
Byt ut ordet TYP mot den datatyp du vill, t ex om du vill ha en jagged long-array :
1 2 3 4 | long [][] MyArray= new long [3][]; MyArray[0]= new long [1]; MyArray[1]= new long [2]; MyArray[2]= new long [3]; |
Svara
Sv:Array med objekt
Fan, jag lyckades visst inte få ihop det ändå :-)
Såhär ser min kod ut. Det jag vill göra är att ta emot en array layerDesign som innehåller antalet layers och noder per lager. Ex [1 2 3] är tre lager med 1,2 resp 3 noder. Sedan vill jag skicka med lagernummret då noden initieras.
for(int i=0;i<layerDesign.Length;i++)
{
int[] temp=new int[layerDesign[i]];
//Temp skall innehålla t.ex. 3 nollor om första lagret har tre noder
for (int j=0; j<layerDesign[i];j++)
{
temp[j]=i;
}
//På något sätt initiera
layout[i]=new nodes[layerDesign[i]]{temp};
}
Jag får dels inte initieringen att funka, men sen kan jag inte komma åt objektets egenskaper heller. Nu var det visserligen många år sedan jag skrev något i C++, men är det inte lättare där?
Svara
Sv: Array med objekt
Det här funkar inte alltså. Hur skall man göra om man vill skicka med flera argument till konstruktorn?
layout[i]=new nodes[layerDesign[i]]{temp};
Svara
Sv: Array med objekt
Är det så här du vill ha det?
1 2 3 4 5 6 7 | for ( int i=0;i<layerDesign.Length;i++) { layout[i]= new nodes[layerDesign[i]]; for ( int j=0; j<layerDesign[i];j++) layout[i][j]= new nodes(); // Argument till konstruktorn här? } |
Svara