/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Allokering af en array af objekter med new~
Fra : Carsten Schwartz


Dato : 21-06-01 08:03

Dette stykke kode:

CNumberObject * pArray;
pArray = new CNumberObject[3](56);

printf ("Index 0 = %d\n", pArray[0].GetNumber());
printf ("Index 1 = %d\n", pArray[1].GetNumber());
printf ("Index 2 = %d\n", pArray[2].GetNumber());

delete [] pArray;

Udskriver:

Index 0 = 56
Index 1 = 56
Index 2 = 56

Fordi klassens constructor bliver kald med argumentet 56 i alle medlemmer af
det allokerede array. Hvor dan kan man allokere det samme array men med
forskellig argumenter til de tre allokerede elementers construktor med new
operatoren?

Ethvert svar er hjælp

Carsten Schwartz




 
 
Ivan Johansen (21-06-2001)
Kommentar
Fra : Ivan Johansen


Dato : 21-06-01 08:49

Carsten Schwartz wrote:
> CNumberObject * pArray;
> pArray = new CNumberObject[3](56);
>
> Fordi klassens constructor bliver kald med argumentet 56 i alle medlemmer af
> det allokerede array. Hvor dan kan man allokere det samme array men med
> forskellig argumenter til de tre allokerede elementers construktor med new
> operatoren?

Således:
pArray = new CNumberObject[3] = {56, 57, 58};

Ivan Johansen

Carsten Schwartz (21-06-2001)
Kommentar
Fra : Carsten Schwartz


Dato : 21-06-01 10:02

Mange tak - det virker fint. Hvad med constructors med flere argumenter?

f.eks:

CNumberObject::CNumberObject(int iNumber, int iMultiplier)
{
m_iNumber = iNumber * iMultiplier;
}


"Ivan Johansen" <Ng@Padowan.dk> wrote in message
news:3B31A6DB.F7E6A0B9@Padowan.dk...
> Carsten Schwartz wrote:
> > CNumberObject * pArray;
> > pArray = new CNumberObject[3](56);
> >
> > Fordi klassens constructor bliver kald med argumentet 56 i alle
medlemmer af
> > det allokerede array. Hvor dan kan man allokere det samme array men med
> > forskellig argumenter til de tre allokerede elementers construktor med
new
> > operatoren?
>
> Således:
> pArray = new CNumberObject[3] = {56, 57, 58};
>
> Ivan Johansen



Ivan Johansen (21-06-2001)
Kommentar
Fra : Ivan Johansen


Dato : 21-06-01 17:30

Carsten Schwartz wrote:
>
> Mange tak - det virker fint. Hvad med constructors med flere argumenter?
>
> f.eks:
>
> CNumberObject::CNumberObject(int iNumber, int iMultiplier)
> {
> m_iNumber = iNumber * iMultiplier;
> }

Mit svar var desværre fejlbehæftet. Sådan går det, når det skal gå
stærkt. Det jeg skulle have skrevet var at du ikke kan initialisere et
array, når det allokeres dynamisk. Du er derfor nødt til at anvende
klassens default constructor. Hvis du derimod ikke allokerer dit array
dynamisk gøres det således:
CNumberObject Array[3] = {56, 57, 58};

Jeg går ud fra, at det var det, du fik til at virke. Hvis din contructor
tager flere argumenter gøres det således:
CNumberObject Array[3] = {CNumberObject(56,2), CNumberObject(57,3),
CNumberObject(58,4)};

Jeg håber jeg fik forklaret det rigtigt denne her gang.

Ivan Johansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste