Thread View: be.comp.programming
10 messages
10 total messages
Started by astone
Fri, 08 Nov 2002 10:58
[C++]
Author: astone
Date: Fri, 08 Nov 2002 10:58
Date: Fri, 08 Nov 2002 10:58
36 lines
1910 bytes
1910 bytes
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
alvast bedankt
dk
Re: [C++]
Author: Dominique Devriese
Date: Fri, 08 Nov 2002 14:59
Date: Fri, 08 Nov 2002 14:59
78 lines
3912 bytes
3912 bytes
astone writes:
> 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;
> }
hallo,
je moet die code eens herlezen, en goed beseffen wat je aan het doen
bent.
Hier is een klein equivalent met int's in plaats van arrays, en zonder
templates:
class integer
{
int oude_int;
public:
void verdubbel();
};
void integer::verdubbel()
{
int nieuwe_int;
nieuwe_int = oude_int;
&oude_int = &nieuwe_int;
};
Ik hoop dat je begrijpt wat je allemaal fout doet:
1. een array is intern wel een pointer, en op sommige momenten kan je
het gebruiken als zodanig, maar je kan de interne pointer _niet_
naar een andere array laten wijzen. Als je dat wil moet je
rechtstreeks met pointers werken...
2. nieuwe_array is een array die wordt gecreerd waar hij gedeclareerd
wordt, en die verdwijnt wanneer hij uit scope verdwijnt. Als je
hem daarna nog probeert te gebruiken, heb je gegarandeerd een
segmentatiefout.. ( nu ja, je compiler mag technisch gezien ook
code genereren die een maanraket lanceert, want het is
"ongedefinieerd" gedrag... ). Als je wil dat je de array erna nog
wilt gebruiken, moet je hem "dynamisch" alloceren, dwz. met new.
3. elementen is ook statisch gealloceerd. Die hoort namelijk bij de
klasse rij. Als je hem probeert te delete [] n, heb je weer iets
ongedefinieerd. Vuistregel: delete _enkel_ dingen die je zelf met
new gealloceerd hebt.
> 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]'
kmoet wel zeggen dat de error niet erg duidelijk is, maar toch.. ;)
> 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
misschien toch dat hoofdstuk over geheugen-allocatie eens herlezen in
je C++ boek ? ;)
sjuus
domi
--
Don't you feel more like you do now than you did when you came in?
Re: [C++]
Author: astone
Date: Fri, 08 Nov 2002 19:21
Date: Fri, 08 Nov 2002 19:21
20 lines
1654 bytes
1654 bytes
In article <877kfohztt.fsf@appel.kotnet.org>, dominique.devriese@student.kuleuven.ac.be says... <snip> > je moet die code eens herlezen, en goed beseffen wat je aan het doen > bent. *bloos* ik ben nieuw in c++, viel het op? in java heb ik die problemen namelijk helemaal niet... > Ik hoop dat je begrijpt wat je allemaal fout doet ik heb je uitleg gelezen en herlezen en het begint stilaan te dagen. ik had een voorlopig werkende oplossing gevonden maar ik ga het geheel toch eens helemaal herschrijven denk ik :) bedankt voor de uitleg! p.s. ik dacht dat ik mijn originele thread met te korte titel gecanceld had, maar blijkbaar kwam hij er toch door... dk
Re: [C++]
Author: Dominique Devriese
Date: Fri, 08 Nov 2002 22:51
Date: Fri, 08 Nov 2002 22:51
23 lines
1859 bytes
1859 bytes
astone writes: > In article <877kfohztt.fsf@appel.kotnet.org>, > dominique.devriese@student.kuleuven.ac.be says... <snip> >> je moet die code eens herlezen, en goed beseffen wat je aan het >> doen bent. > *bloos* ik ben nieuw in c++, viel het op? om heel eerlijk te zijn, toch wel een beetje ;) maar uit fouten leer je, he :) > in java heb ik die > problemen namelijk helemaal niet... er zijn nog wel meer dingen die je in Java niet hebt tegenover C++... De C++ STL is bijvoorbeeld geniaal. sjuus domi -- You're almost as happy as you think you are.
Re: [C++]
Author: KLinZ
Date: Sat, 09 Nov 2002 09:48
Date: Sat, 09 Nov 2002 09:48
18 lines
1674 bytes
1674 bytes
Dominique Devriese wrote: > astone writes: > >> in java heb ik die >> problemen namelijk helemaal niet... > > er zijn nog wel meer dingen die je in Java niet hebt tegenover > C++... De C++ STL is bijvoorbeeld geniaal. > Voor bijna elke STL template is een Java equivalent: http://java.sun.com/products/jdk/1.2/docs/api/java/util/package-summary.html -- www.zenobits.com
Re: [C++]
Author: Slayerke
Date: Sat, 09 Nov 2002 12:59
Date: Sat, 09 Nov 2002 12:59
28 lines
2021 bytes
2021 bytes
KLinZ wrote: > Dominique Devriese wrote: >> astone writes: >> >>> in java heb ik die >>> problemen namelijk helemaal niet... >> >> er zijn nog wel meer dingen die je in Java niet hebt tegenover >> C++... De C++ STL is bijvoorbeeld geniaal. >> > > Voor bijna elke STL template is een Java equivalent: > > http://java.sun.com/products/jdk/1.2/docs/api/java/util/package-summary.html > > > templates in java dan ofzo? IMO zit dat niet in de standaard java-compiler(en syntax). Het is wel zo dat voor zo goed als elke aangeboden template(en class) in de STL er een equivalent bestaat als class in java, en aangezien in java zo goed als alles afgeleid is van Object kun je die classen met bijna alles gebruiken, maar toch vind ik templates flexibeler :-) -- Groeten, Slayerke
Re: [C++]
Author: Dominique Devriese
Date: Sat, 09 Nov 2002 13:05
Date: Sat, 09 Nov 2002 13:05
22 lines
1824 bytes
1824 bytes
klinz writes: > Dominique Devriese wrote: >> astone writes: >> >>> in java heb ik die problemen namelijk helemaal niet... >> >> er zijn nog wel meer dingen die je in Java niet hebt tegenover >> C++... De C++ STL is bijvoorbeeld geniaal. >> > Voor bijna elke STL template is een Java equivalent: > http://java.sun.com/products/jdk/1.2/docs/api/java/util/package-summary.html Al ooit geprobeerd om java.util.Vector op een serieuze manier te gebruiken ? sjuus domi -- Celebrate Hannibal Day this year. Take an elephant to lunch.
Re: [C++]
Author: KLinZ
Date: Sat, 09 Nov 2002 14:49
Date: Sat, 09 Nov 2002 14:49
24 lines
1857 bytes
1857 bytes
Dominique Devriese wrote: > klinz writes: > >> Dominique Devriese wrote: >>> astone writes: >>> >>>> in java heb ik die problemen namelijk helemaal niet... >>> >>> er zijn nog wel meer dingen die je in Java niet hebt tegenover >>> C++... De C++ STL is bijvoorbeeld geniaal. >>> > >> Voor bijna elke STL template is een Java equivalent: >> http://java.sun.com/products/jdk/1.2/docs/api/java/util/package- >> summary.html > > Al ooit geprobeerd om java.util.Vector op een serieuze manier te > gebruiken ? Yep. -- www.zenobits.com
Re: [C++]
Author: Koen Hautekeete
Date: Sat, 09 Nov 2002 14:50
Date: Sat, 09 Nov 2002 14:50
15 lines
1579 bytes
1579 bytes
On 09 Nov 2002 14:05:44 +0100, Dominique Devriese <dominique.devriese@student.kuleuven.ac.be> wrote: [ ... ] >Al ooit geprobeerd om java.util.Vector op een serieuze manier te >gebruiken ? Die wordt (bijna) niet meer gebruikt. Zie bvb <url:http://java.sun.com/docs/books/tutorial/collections/index.html>. mvg Koen Hautekeete
Re: [C++]
Author: Dominique Devriese
Date: Sat, 09 Nov 2002 16:39
Date: Sat, 09 Nov 2002 16:39
33 lines
2446 bytes
2446 bytes
Koen Hautekeete writes: > On 09 Nov 2002 14:05:44 +0100, Dominique Devriese > <dominique.devriese@student.kuleuven.ac.be> wrote: > [ ... ] >> Al ooit geprobeerd om java.util.Vector op een serieuze manier te >> gebruiken ? > Die wordt (bijna) niet meer gebruikt. Zie bvb > > <url:http://java.sun.com/docs/books/tutorial/collections/index.html>. Hm.. die nieuwe dingen lijken al iets beter ( kortere namen voor elementAt() e.d. ), maar ze zijn nog altijd heel mager tgov. de C++ alternatieven, hoor.. Ten eerste is de C++ manier sneller door het gebruik van templates ipv. polymorfisme, hij is ook handiger door het gebruik van operator overloading, en het vermijden van de casts die je in java altijd moet doen met Vectors e.d. En dan zwijg ik nog over de hele collectie van algoritmen in C++ die imho toch nog wel heel wat krachtiger zijn dan de java alternatieven, hoor.. nu ja, tzal wel persoonlijk zijn, zeker.. :) sjuus domi -- If one cannot enjoy reading a book over and over again, there is no use in reading it at all. -- Oscar Wilde
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads