🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #6883

Re: [C++] array verdubbelen in grootte

#6883
From: Slayerke
Date: Fri, 08 Nov 2002 12:48
46 lines
2855 bytes
astone wrote:

> In een poging een eigen template 'rij' te schrijven ben ik op een
> probleem gestoten. Om een of andere reden slaag ik er niet in een array
> te doen verdubbelen in grootte. het betreft dit stuk code :
> 
> template <class Element>
> void rij<Element>::verdubbelArraygrootte()
> {
>     arraygrootte*=2;
>     Element nieuwe_array[arraygrootte];
>     for (int i=0; i<aantal_elementen; i++)
>     {
>             nieuwe_array[i] = elementen[i];
>     }
>     delete [] elementen;
>     elementen = nieuwe_array;
> }
> 
> elementen[] is als volgt geinitialiseerd: Element elementen[100];
> Op de laatste regel geeft gcc mij steeds de volgende melding
> wanneer ik probeer te compilen met rij<int> :
> 
> incompatible types in assignment of `int[((rij<int>::arraygrootte - 1) +
> 1)]' to `int[100]'
> 
> Kan iemand me helpen en eventueel ook uitleggen waarom dit niet
> werkt? Het zal waarschijnlijk iets erg eenvoudigs zijn, maar
> ik vind het echt niet.
> 
> Wie de rest van de code wil zien, kan terecht op
> http://www.mooo.be/test/code.txt
> 
> 
Een variabele van het type array is een constant pointer, daar kun je geen 
nieuwe waarden aan geven. Je doet er beter aan gewoon een pointer te 
gebruiken:
Element* elementen=new Element[100];
In je destructor dan wel geen delete[] elementen; vergeten.
Een array moet je ook niet vrijgeven, die wordt automatisch vrijgegeven, dus 
je moet in die code die je gebruikt om te kopieren ook met pointers werken 
en via de new-operator, anders ga je een pointer naar een vrijgegeven blok 
geheugen teruggeven, wat gaat resulteren in garbage of segfaults.
-- 
Groeten,
Slayerke
Technical Details
Message-ID: <moOy9.10704$Nd.3263@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-01!sn-xit-04!supernews.com!newshosting.com!news-xfer1.atl.newshosting.com!newsfeed.icl.net!newsfeed.fjserv.net!news-lond.gip.net!news.gsl.net!gip.net!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <MPG.1835b759f3ac0beb98971b@news.pandora.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,bb472599d65044ed
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-11-08 05:12:21 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-01!sn-xit-04!supernews.com!newshosting.com!news-xfer1.atl.newshosting.com!newsfeed.icl.net!newsfeed.fjserv.net!news-lond.gip.net!news.gsl.net!gip.net!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: Slayerke <slayerkenospammer@slayerke.co.uk>
Subject: Re: [C++] array verdubbelen in grootte
Newsgroups: be.comp.programming
Reply-To: slayerkenospammer@slayerke.co.uk
References: <MPG.1835b759f3ac0beb98971b@news.pandora.be>
Lines: 46
User-Agent: KNode/0.7.1
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit
Message-ID: <moOy9.10704$Nd.3263@afrodite.telenet-ops.be>
Date: Fri, 08 Nov 2002 12:48:18 GMT
NNTP-Posting-Host: 213.224.102.133
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1036759698 213.224.102.133 (Fri, 08 Nov 2002 13:48:18 MET)
NNTP-Posting-Date: Fri, 08 Nov 2002 13:48:18 MET
Organization: Telenet Internet