|
| 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
| |
|
|