Cruise.Elroy | maandag 27 september 2010 @ 09:27 | |||||
![]() Nu mét gratis web-support! Als je vragen hebt over C of C++, dan zit je hier goed met een ( Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt. ![]() En onthoud: lieve modjes maken dit topic centraal! ![]() Vorige delen: [C(++)] voor dummies - Deel 1 ![]() ![]() ![]() Dat ligt eraan. Als je alléén voor MS Windows wilt gaan developen, is Visual Studio een goede optie. Deze kun je bovendien als je student bent via Microsoft DreamSpark of MSDN Academic Alliance gratis downloaden. ![]() Wil je echter cross-platform (dat wil zeggen: voor b.v. Windows én Linux, of Linux én Mac) gaan developen, dan zijn Dev-C++ en Code::Blocks een goede optie voor C++. Eclipse (ook voor C) en NetBeans zijn ook goede keuzes, alleen zijn deze meer op Java gericht. Een ander IDE, van Nokia's hand, is Qt Creator. Dit IDE maakt gebruik van het Qt-framework, een set van functies, types, variabelen etc. om programmeren makkelijker te maken. Dit framework is cross-platform. ![]() ![]() Stop! Voor vragen hoe je bepaalde ingebouwde functies, types of classes gebruikt kun je de C referentie of de C++ referentie gebruiken. Hier staat alles in wat je nodig hebt. ![]() ![]() C++ is, eenvoudig gezegd, een nieuwere versie van C (vandaar ook de naam, C++ wil zeggen: verhoog de waarde van C met 1). Het biedt onder andere betere klasse-ondersteuning en verschillende nieuwe types, zoals vectors en maps, om er maar een paar te noemen. Als je wilt beginnen met leren, is C++ beter, want C wordt eigenlijk niet vaak meer gebruikt. ![]() Het Windows SDK is een set van functies, gemaakt door Microsoft, om het programmeren voor Windows te vereenvoudigen. Als je ervoor kiest het Windows SDK te gebruiken, houd er dan rekening mee dat je applicatie Windows-only wordt! Je kunt de laatste versie hier vinden ter download. ![]() Handige links: Referenties en tutorials: • Leer C en/of C++ (engels) • Leer programmeren met het Windows SDK (engels) • Info over het Windows SDK (engels) Deze OP vind je hier. | ||||||
xaban06 | maandag 27 september 2010 @ 10:05 | |||||
tvp. Ik ken het, wil het wel leren. | ||||||
thabit | maandag 27 september 2010 @ 10:28 | |||||
tvp::tvp() {cout << "tvp\n";} | ||||||
Cruise.Elroy | maandag 27 september 2010 @ 10:34 | |||||
tsss, geen std::endl gebruikt ![]() | ||||||
thabit | maandag 27 september 2010 @ 10:42 | |||||
Eigenlijk had ik ook geen cout moeten gebruiken. ![]() | ||||||
Cruise.Elroy | maandag 27 september 2010 @ 10:57 | |||||
Niks mis met std::cout ![]() | ||||||
Luchtkoker | maandag 27 september 2010 @ 12:11 | |||||
C is voor echte bazen. | ||||||
Trollface. | maandag 27 september 2010 @ 17:33 | |||||
| ||||||
netolk | maandag 27 september 2010 @ 18:03 | |||||
@ Cruise.Elroy het is inderdaad gelukt ![]() Nu alleen nog even een manier vinden om de router een bepaalde poort te gebruiken voor het progje... | ||||||
Cruise.Elroy | dinsdag 28 september 2010 @ 08:30 | |||||
| ||||||
Trollface. | dinsdag 28 september 2010 @ 15:52 | |||||
quote:
![]() | ||||||
Cruise.Elroy | donderdag 30 september 2010 @ 06:16 | |||||
Omg het compileert niet meer ![]() | ||||||
netolk | donderdag 30 september 2010 @ 21:02 | |||||
quote:Wat dat void main() niet?? dat is ook geen C++ | ||||||
Cruise.Elroy | donderdag 30 september 2010 @ 21:04 | |||||
void main() compileert prima, er is ergens een haakje of punt-komma verdwenen en ik heb het origineel niet meer ![]() | ||||||
netolk | donderdag 30 september 2010 @ 21:11 | |||||
umm nee void main compileert bij mijn weten alleen in microsoft meuk en in C maar niet in C++...
| ||||||
Cruise.Elroy | donderdag 30 september 2010 @ 21:54 | |||||
quote:Ik compileer ook in microsoft meuk | ||||||
netolk | vrijdag 1 oktober 2010 @ 07:54 | |||||
vandaar ![]() | ||||||
whosvegas | vrijdag 1 oktober 2010 @ 08:16 | |||||
Een tvp, lang niks meer mee gedaan, nu is er Java ![]() | ||||||
Cruise.Elroy | vrijdag 1 oktober 2010 @ 08:28 | |||||
| ||||||
Luchtkoker | vrijdag 1 oktober 2010 @ 16:50 | |||||
Waarom geen indentatie of nieuwe regels ![]() ![]() [ Bericht 36% gewijzigd door Luchtkoker op 01-10-2010 16:56:02 ] | ||||||
netolk | vrijdag 1 oktober 2010 @ 20:39 | |||||
hey even een vraagje ik ben nu bezig met het leren om winsock te gebruiken in applicaties... maar nu snap ik alleen even niet waarom een pc eigenlijk een firewall nodig heeft omdat met sockets er een listening port moet zijn... | ||||||
minibeer | zondag 3 oktober 2010 @ 14:38 | |||||
hey. ik had een klein vraagje over assembleertaal (en ik dacht dat dit het topic was waarin ik mijn vraag het beste kan stellen). Is het niet zo dat je voor elke processor een andere assembleertaal hebt? Hoe doen bedrijven dat dan die assembleertaal voor een stukje code gebruiken (bijvoorbeeld gebruiken met c++)? | ||||||
thabit | zondag 3 oktober 2010 @ 14:41 | |||||
quote:Die schrijven voor de verschillende processoren een apart stukje assembler. Omdat ze niet aan de gang willen blijven en er nogal veel verschillende processoren zijn, schrijven ze de code vaak ook nog in C. | ||||||
minibeer | zondag 3 oktober 2010 @ 14:51 | |||||
quote:Ok. Zelf code in assembleertaal schrijven is dus eigenlijk onbegonnen werk, als je wil dat je programmatje compatibel is naar andere processoren? | ||||||
thabit | zondag 3 oktober 2010 @ 15:01 | |||||
quote:Je moet de stukken die je in assembler wilt schrijven, ook in C schrijven, zodat het in elk geval voor elke processor compileert. Je moet er een beetje een hiërarchie in zien. Alles in C(++) schrijven is ook onbegonnen werk, moet je alleen doen bij die stukken code die snel en geheugen-efficiënt dienen te zijn. Daarbovenop zet je een hogere programmeertaal (eentje met een fatsoenlijke syntax en garbage collecting). Binnen je C(++) kun je de meest kritieke stukken nog in inline-assembler schrijven, alleen zit je dan wel veel met #ifdef en zo te kloten. Zelfs tussen linux en windows is assembler niet hetzelfde (M$ doet er alles aan om dingen maar niet portable te maken, zelfs de syntax voor x86-assemblercode is anders). | ||||||
Diabox | zondag 3 oktober 2010 @ 15:24 | |||||
Leuk weetje.quote: | ||||||
Luchtkoker | zondag 3 oktober 2010 @ 15:46 | |||||
quote: ![]() Komt ie daar weer mee. | ||||||
netolk | zondag 3 oktober 2010 @ 15:57 | |||||
quote:Het is toch een leuk weetje ?? | ||||||
Luchtkoker | zondag 3 oktober 2010 @ 15:59 | |||||
quote:Ja, hij wordt na een aantal honderd keer zien alleen een beetje saai. Hé, Diabox? ![]() | ||||||
Diabox | zondag 3 oktober 2010 @ 16:17 | |||||
quote:homo ![]() | ||||||
Luchtkoker | zondag 3 oktober 2010 @ 16:24 | |||||
quote:Gereport ![]() | ||||||
minibeer | zondag 3 oktober 2010 @ 16:58 | |||||
quote:Wat heb ik medelijden met die programmeurs... | ||||||
minibeer | zondag 3 oktober 2010 @ 17:22 | |||||
quote:ah... ik dacht dat c en c++ ook wel gebruikt werden om programma's op zichzelf mee te schrijven, maar ik bedenk net dat het een enorm gekloot is om in c++ een simpel window te openen. eigenlijk alle programma's die ik schrijf zijn gewoon in 1 programmeertaal... Hoe doet men dat dan, verschillende programmeertalen 'door elkaar' gebruiken? Libraries met methodes/functies erin ofzo? (dat is de manier waarop ik dat weleens heb gedaan met qbasic en assembleertaal ![]() | ||||||
Luchtkoker | zondag 3 oktober 2010 @ 17:30 | |||||
quote:Ja, DLLs dus (dynamic linked libraries), Object files, etc. | ||||||
thabit | zondag 3 oktober 2010 @ 17:34 | |||||
quote:Dat wordt inderdaad gedaan, maar je geeft zelf al aan waarom dat niet handig is. Veel mensen blijven toch in oude patronen vastgeroest zitten: 20 jaar geleden deed men het zo, dus doen we het nu nog steeds zo. ![]() quote:Dat kan inderdaad met libraries. Vaak moet je dan wel bovenop je C-code nog een speciale interface schrijven waarmee je dan vanuit de hogere programmeertaal de C-code kan aanroepen. | ||||||
Cruise.Elroy | maandag 4 oktober 2010 @ 07:56 | |||||
quote:Gebruik maken van libraries, die dus in elke taal kunnen zijn geschreven. Ikzelf schrijf alles in C++, en ik heb gewoon zelf een simpele wrapper lib geschreven voor het maken van vensters e.d. en die gebruikt op zijn beurt weer de standaard functies uit de windows headers. CreateWindowEx() etc. | ||||||
Cruise.Elroy | maandag 4 oktober 2010 @ 08:06 | |||||
quote:Meestal schrijf je "snelle" code in C(++) waar je gewoon goed nadenkt over je geheugen-access, branches, cache misses etc. Echt ASM programmeren is eigenlijk niet nodig op huidige PC/Console hardware, en als het al nodig is, dan is het voor je gedaan door de vendor en in een leuke lib gezet voor je ![]() Wat je tegenwoordig vaak ziet zijn intrinsics, dit zijn een soort super-basic functies die in je compiler zijn ingebakken en direct naar ASM worden omgezet voor verschillende procs: http://msdn.microsoft.com/en-us/library/5704bbxw.aspx?ppud=4 | ||||||
Cruise.Elroy | maandag 4 oktober 2010 @ 08:08 | |||||
quote:Voor elke proc alles dubbel schrijven en/of een doolhof aan #ifdef ![]() | ||||||
minibeer | maandag 4 oktober 2010 @ 10:47 | |||||
ah bedankt voor de reacties ![]() maar hoe kan het dan dat rollercoaster tycoon het op verschillende processors doet (tenminste ik neem aan dat ie dat doet), terwijl het voor 99% in asm is geschreven? | ||||||
Cruise.Elroy | maandag 4 oktober 2010 @ 14:07 | |||||
quote:De originele RCT doet het dan ook alleen op compatible 8086 processoren, denk ik. Maar dat was toentertijd ook de standaard, dat had iedereen thuis staan. Die basisset wordt tegenwoordig door elke CPU ondersteunt. Vergeet niet dat Intel en AMD misschien wel verschillende CPUs maken, maar ze ondersteunen allemaal (nagenoeg) precies dezelfde instructieset. ![]() Er zijn (nu nog?) kleine verschillen in de instruciesets tussen AMD en Intel, maar die instructies worden standaard niet gebruikt door je C++ compiler en als je ASM zit te klooien laatje die ook gewoon links liggen tenzij je echt hele specifieke redenen hebt. Ik weet niet of je het hebt meegemaakt, maar toen de MMX processoren op de markt kwamen waren er spellen die alleen draaide op processoren die MMX instructies ondersteunden, zelfde met 3DNow instrucies en nog wat van die uitbreidingen. Zelfs nu kan je bij het compileren van je programma in Visual Studio aangeven dat hij "modernere" instructies mag gebruiken, en dan werken je programma's dus niet op oudere PCs, bijv. niet op oude AMDs maar wel op oude intel CPUs. Laatst nog mee lopen klooien, en je kan er best wel wat procenten uitpersen. ![]() | ||||||
minibeer | maandag 4 oktober 2010 @ 18:09 | |||||
quote:Ok, nu begrijp ik het ![]() Ik dacht dat asm zo erg verschilde dat je zo ongeveer per computer echt sowieso opnieuw moest compileren, maar dat valt dus wel mee ![]() | ||||||
Luchtkoker | maandag 4 oktober 2010 @ 18:12 | |||||
Nee, er zit een verschil tussen een andere processor en een andere architectuur. Niet elke processor heeft een andere architectuur; er zijn vele malen meer processoren dan architecturen, bovendien is het (met name hedendaags) veelal gestandaardiseerd zoals Cruise.Elroy zegt, om cross-processor compatibility te maximaliseren. ![]() | ||||||
netolk | maandag 4 oktober 2010 @ 21:27 | |||||
quote:Gelukkig wel zeg anders zou het wel heel rot programmeren zijn... | ||||||
Cruise.Elroy | dinsdag 5 oktober 2010 @ 08:32 | |||||
quote:Ja, dat zou ook wel raar zijn want gecompileerd c(++) is even portable als gecompileerd ASM. | ||||||
netolk | woensdag 6 oktober 2010 @ 17:25 | |||||
quote:Komt het niet (ongeveer) op het zelfde neer? | ||||||
minibeer | woensdag 6 oktober 2010 @ 23:12 | |||||
ik hoorde dat je via de XNA-library dingen voor de xbox kon maken, dus daar heb ik eens wat over opgezocht. Blijkt dat je bij microsoft een abo moet afsluiten voor minstens 4 maanden bij de XNA Creators Club voor 50 dollar... Terwijl het enige wat je wil doen gewoon een paar bestandjes op je eigen xbox zetten ![]() | ||||||
Cruise.Elroy | woensdag 6 oktober 2010 @ 23:20 | |||||
Met XNA kan je nog steeds gewoon leuke apps maken voor op de PC. ![]() ![]() | ||||||
minibeer | woensdag 6 oktober 2010 @ 23:26 | |||||
quote:Ja daswaar. Maar ik blijf het raar vinden, eerst een fakking dure xbox 360 kopen, dan ook nog veel geld moeten betalen om er iets op te zetten wat je zelf hebt geschreven. Ik vind 50 euro ook belachelijk veel te duur voor wat je ervoor terugkrijgt. pff, ik vraag me af of er geen andere manier is om je xna dingetje aan de gang te krijgen op zo'n ding... [ Bericht 6% gewijzigd door minibeer op 06-10-2010 23:38:18 ] | ||||||
Cruise.Elroy | woensdag 6 oktober 2010 @ 23:54 | |||||
Euhm die XBOX koop je als spelsysteem, niet als devkit. ![]() Er zijn andere manieren ja, maar 50 euro is een koopje vergeleken met het gedoe om het op andere manieren aan de praat te krijgen. | ||||||
minibeer | woensdag 6 oktober 2010 @ 23:59 | |||||
quote:ja maar maakt niet uit toch, je betaalt ervoor, dan lijkt het me logisch dat je er dingen op mag zetten, net zoals bij een computer bijvoorbeeld. En als het nou iets eenmaligs was, of dat je er iets fysieks voor terugkrijgt, maar nee. Het is gewoon dat microsoft geld wil hebben, je betaalt verder niet omdat het hun geld kost ofzo. Voor kleine gamebedrijven is 50 euro goed te doen, maarja ik ben student en ik weet niet eens of ik er vaker dan 1 keer iets op wil zetten. Maargoed, genoeg microsoftbashen voor vandaag. weltrusten ![]() | ||||||
Cruise.Elroy | donderdag 7 oktober 2010 @ 00:03 | |||||
Gamebedrijven hebben devkits van 5000+ euro per stuk. ![]() En dat hele "je koopt het dus je mag er alles op" geldt niet voor dit soort dingen afaik. Ding is niet gemaakt als devkit dus je kan het gewoon zien als een accesoire, zoals een softwaretitel. En het ondersteunen van de XNA community kost ook veel geld en tijd, waar zij verder niets van terug zien. Het maken van een commerciele game gaat trouwens weer totaal anders. | ||||||
minibeer | donderdag 7 oktober 2010 @ 11:36 | |||||
quote:Je zal wel gelijk hebben, ik vind gewoon dat ze het niet slim doen.Want nu moet je als je wil beginnen al 50 euro betalen. Ze zouden beter iets kunnen bedenken waarin je vrij bent om te beginnen en dan betaald voor iets waar je echt iets aan hebt. Laat me nou lekker zeiken ![]() | ||||||
Outlined | zondag 10 oktober 2010 @ 00:38 | |||||
quote:Haast niet voor te stellen als je dit zo ziet: ![]() | ||||||
netolk | zondag 10 oktober 2010 @ 10:53 | |||||
quote:umm... denk dat je plaatje niet werkt.... en die graphics zijn minder ja, maar dat zegt nog niets over hoe het geprogrammeerd is... | ||||||
minibeer | maandag 11 oktober 2010 @ 00:16 | |||||
in c++ kon je zon leuk truukje doen waardoor je een reference als type van een functie kan hebben. Waardoor je sit soort dingen kan doen: Grootste(variable1, variabele2) = 5; Waardoor de grootste van die 2 variabelen op 5 werd gezet. Dit kan niet in c#, of wel? | ||||||
Outlined | maandag 11 oktober 2010 @ 00:27 | |||||
quote:is dit niet veel leesbaarderder ![]()
| ||||||
netolk | maandag 11 oktober 2010 @ 08:51 | |||||
quote:Lijkt me leesbaarder maar is wel meer code waardoor het toch onduidelijk kan worden als je zelf die andere notatie gewend bent... | ||||||
Cruise.Elroy | maandag 11 oktober 2010 @ 09:54 | |||||
quote:Vind je? Semantisch niet echt geweldig leesbaar. Liever:
![]() | ||||||
minibeer | maandag 11 oktober 2010 @ 12:39 | |||||
het ging me ook niet echt om de leesbaarheid maar meer om het truukje ![]() (kan die nou in c# of niet?) [ Bericht 4% gewijzigd door minibeer op 11-10-2010 12:48:56 ] | ||||||
thabit | maandag 11 oktober 2010 @ 12:59 | |||||
Ik ken C# niet zo goed, maar is het niet zo dat daar objecten per definitie reference-typed zijn? Dan zou het op zich met objecten moeten kunnen (mogelijk niet met built-in types). | ||||||
Luchtkoker | maandag 11 oktober 2010 @ 13:00 | |||||
-edit verkeerd begrepen ![]() | ||||||
Diabox | maandag 11 oktober 2010 @ 13:01 | |||||
quote:Gast ![]() | ||||||
Luchtkoker | maandag 11 oktober 2010 @ 13:02 | |||||
quote:Leuk he, quotes editen. ![]() | ||||||
minibeer | maandag 11 oktober 2010 @ 13:17 | |||||
quote:classes wel ja, structs niet standaardtypes niet nee dus ik denk dat het idd alleen met class-objecten kan | ||||||
Cruise.Elroy | maandag 11 oktober 2010 @ 16:05 | |||||
quote:Ben geen C# wiz maar je kan volgens mij expliciet aangeven dat je iets by ref wilt sturen, dus ik neem aan dat je het ook met primitives en structs kan. | ||||||
minibeer | maandag 11 oktober 2010 @ 17:00 | |||||
quote: ![]() maar helaas kan je geen reference returnen als waarde van een methode op die manier.. | ||||||
Cruise.Elroy | dinsdag 12 oktober 2010 @ 08:31 | |||||
quote:Als je functie een class returnt is het altijd by value dan (snap ik voor scope vars, maar ook als je in de functie bijv. een new doet?) En als je dan een class maakt met daarin een class reference en die returnt? | ||||||
minibeer | dinsdag 12 oktober 2010 @ 14:02 | |||||
quote:Left side of an expression must be a variable or object ofzoiets kreeg ik de vorige keer. Dus nee, het zit er niet in op die manier ![]() | ||||||
Cruise.Elroy | dinsdag 12 oktober 2010 @ 14:17 | |||||
Als ik zo even snel google dan kan het wel gewoon ![]() | ||||||
minibeer | dinsdag 12 oktober 2010 @ 17:29 | |||||
quote:wat zijn je bronnen? ![]() | ||||||
thabit | dinsdag 12 oktober 2010 @ 17:33 | |||||
Misschien toch maar een apart C#-topic maken? ![]() | ||||||
minibeer | dinsdag 12 oktober 2010 @ 17:40 | |||||
quote: ![]() ik ben de enige die vragen stelt dan ben ik bang... | ||||||
Catbert | dinsdag 12 oktober 2010 @ 17:41 | |||||
quote:Wat zou kunnen is als je een ValueObject hebt met daarin een value, is dat je iets als dit doet:
quote:Tja, maar C# heeft echt geen hout met C++ te maken. | ||||||
Cruise.Elroy | dinsdag 12 oktober 2010 @ 17:44 | |||||
Kan je niet gewoon MyClass functie (MyClass a, MyClass b) { if (a.waarde > b.waarde) return a; else return b; } Of maakt hij bij returnen dan altijd een kopie? En zo ja, hoe return je dan een nieuw gemaakt object vanuit een functie zonder extra kopieren? of kan dat gewoon niet. ![]() | ||||||
Catbert | dinsdag 12 oktober 2010 @ 17:47 | |||||
quote:Wat is je vraag precies? Jouw functie doet exact hetzelfde als mijn "grootste" functie? En nee, hij maakt niet plotseling een kopie. Je krijgt gewoon de reference a of b terug. | ||||||
Cruise.Elroy | dinsdag 12 oktober 2010 @ 17:48 | |||||
Ok dus dan kan je gewoon: functie(A,B).increase() doen? Zeg maar wat er werd gevraagd. ![]() | ||||||
Catbert | dinsdag 12 oktober 2010 @ 17:51 | |||||
quote:Tuurlijk, maar het ging om primitives, niet om objecten. Dat C++ voorbeeld m.b.t. het ophogen van ints (primitives) werkt niet. | ||||||
Cruise.Elroy | dinsdag 12 oktober 2010 @ 17:56 | |||||
Ah ik was de hele tijd in de veronderstelling dat het met classes moest gaan werken. Snapte het probleem al niet. ![]() Als je impliciete casts kan doen tussen classes en primitives dan kan het nog steeds, maar ik gok dat C# dat niet heeft. | ||||||
minibeer | dinsdag 12 oktober 2010 @ 19:57 | |||||
ik heb weer een vraaag over c# ![]() zal ik dan maar gelijk een topic aanmaken? | ||||||
Catbert | dinsdag 12 oktober 2010 @ 21:42 | |||||
quote:Goed plan ![]() | ||||||
minibeer | dinsdag 12 oktober 2010 @ 23:30 | |||||
quote:moet ik dan een OP maken of is er ergens in een grijs verleden al een gemaakt? (zoeken op "c#" werkt niet zo goed geloof ik...) | ||||||
thabit | woensdag 13 oktober 2010 @ 00:37 | |||||
Zo te zien is er een .NET-topic. Daar kun je vast je C#-ei kwijt. | ||||||
Cruise.Elroy | woensdag 13 oktober 2010 @ 11:22 | |||||
Nee maak aub een nieuw topic aan. C# is zeker niet gelijk aan .NET. vooral voor beginnersvragen die vooral over de syntax e.d. van de taal zelf zullen gaan ![]() | ||||||
minibeer | woensdag 13 oktober 2010 @ 11:32 | |||||
waarom zou je c# niet bij c en c++ doen eigenlijk? | ||||||
Catbert | woensdag 13 oktober 2010 @ 12:23 | |||||
Hier voor Micorosft.NET - Deel 2quote:Je bedoelt neem ik aan dat C++ niet gelijk is aan C#. Je vergelijkt nu een taal met een platform. C# is .Net, maar .Net is niet perse C#. quote:Omdat C# en C++ geen hol met mekaar te maken hebben. Dat is net zo iets als Java en PHP in een topic pleuren omdat ze toevallig beiden curly braces gebruiken. | ||||||
Cruise.Elroy | woensdag 13 oktober 2010 @ 13:52 | |||||
quote:Nee ik bedoel wat ik schreef. ![]() | ||||||
Catbert | woensdag 13 oktober 2010 @ 14:32 | |||||
quote:Een belangrijk onderdeel van de "Hoe doe ik" vragen gaat gewoon over het .Net framework. Vb.net bijvoorbeeld hoort net zoals C# in dat topic. | ||||||
minibeer | woensdag 13 oktober 2010 @ 15:30 | |||||
quote:een groot deel wel ja maar lang niet alle schat ik zo... | ||||||
Catbert | woensdag 13 oktober 2010 @ 15:51 | |||||
quote:Vragen over bijvoorbeeld "hoe zet ik een socket connectie op in C#" gaan dus over het framework, en niet specifiek alleen over C#. Dat kan prima samen in een topic, het is niet alsof het daar storm loopt ofzo. | ||||||
Cruise.Elroy | woensdag 13 oktober 2010 @ 16:08 | |||||
quote:Maar vaak willen ze wel C# code voorbeelden zien etc. Mensen die net met C# beginnen zitten denk ik niet te wachten om een abstracte oplossing te krijgen in het .NET domein. Nouja van mij hoeft het niet, maar ik denk dat onervaren mensen die hulp zoeken met C# echt niet in/naar een .NET topic gaan zoeken. | ||||||
Catbert | woensdag 13 oktober 2010 @ 16:52 | |||||
quote:Wie zei er iets over abstract? Voorbeelden in C# maken nog steeds gebruik van het .Net framework. quote:Tja, als ze dat al niet snappen... | ||||||
Cruise.Elroy | woensdag 13 oktober 2010 @ 17:02 | |||||
quote:Jij weet net zo goed als ik dat 90% van de "help!" vragen die we hier krijgen gaan over syntax errors of vragen over classes en instanties e.d. Dat heeft weinig tot niets met .NET te maken. En veel C# beginners weten wel van het .NET platform af maar zullen nooit naar een .NET thread zoeken om een vraag over een error die de C# compiler opgeeft. En dat is helemaal niet zo'n gekke gedachte. | ||||||
progje | woensdag 13 oktober 2010 @ 17:06 | |||||
quote:inderdaad... ![]() | ||||||
Catbert | woensdag 13 oktober 2010 @ 17:08 | |||||
quote:Dan zet je .Net/C#/Vb.net in de titel, sjeez ![]() | ||||||
Cruise.Elroy | woensdag 13 oktober 2010 @ 17:12 | |||||
quote: ![]() | ||||||
progje | woensdag 13 oktober 2010 @ 17:33 | |||||
quote:hihi, zie je, zo is overal een oplossing voor ![]() | ||||||
TeringHenkie | woensdag 20 oktober 2010 @ 01:45 | |||||
Eigenlijk is de pracht van .NET dat de taal losgekoppeld is van het platform. ![]() ![]() | ||||||
Cruise.Elroy | woensdag 20 oktober 2010 @ 09:59 | |||||
quote: ![]() | ||||||
TeringHenkie | woensdag 20 oktober 2010 @ 10:00 | |||||
quote:Is toch zo? PHP is voor 13-jarigen die "websites maken" als bijbaantje ![]() | ||||||
Trollface. | woensdag 20 oktober 2010 @ 10:38 | |||||
quote:Neger aub. ![]() | ||||||
Cruise.Elroy | woensdag 20 oktober 2010 @ 11:30 | |||||
quote:Kijk dat je echt geen fuck van het vakgebied weet is helemaal niet erg, maar dat je dan blind mensen loopt te bitchen vind ik dan wel weer jammer. | ||||||
thabit | woensdag 20 oktober 2010 @ 11:38 | |||||
Veegt Python tegenwoordig niet gewoon de vloer aan met al die andere scripttalen? Waarom zou je nog Perl of PHP leren als er ook Python bestaat? | ||||||
TeringHenkie | woensdag 20 oktober 2010 @ 11:42 | |||||
quote:Heb ik mensen gekwetst ofzo? Ik bedoel alleen maar dat PHP die associatie oproept, het was niet als troll bedoeld. ![]() | ||||||
Cruise.Elroy | woensdag 20 oktober 2010 @ 12:13 | |||||
quote:Scripttalen vallen of staan met hun libs en daarin is Python nu echt heer en meester als ik dat mag geloven. Ik heb zelf heel even in Python gewerkt en ik vond het een nachtmerrie. ![]() | ||||||
Catbert | woensdag 20 oktober 2010 @ 23:16 | |||||
quote:Niet om 't een of 't ander, maar de meeste grote serieuze webapps worden toch echt op basis van Java of .Net gebouwd hoor. Dus z'n verwoordig was wat trollerig, maar mijn "vakgebied" is consultantje spelen voor een backend bij dit soort projecten, en dat is ongeveer 50% java, 45% .net, 5% PHP. | ||||||
Trollface. | donderdag 21 oktober 2010 @ 12:25 | |||||
quote:Java kan ik nog begrijpen, maar .NET?! ![]() | ||||||
Cruise.Elroy | donderdag 21 oktober 2010 @ 13:32 | |||||
quote:Ik snap je punt niet echt, maar er zijn genoeg degelijke PHP projecten en programmeurs. Ging mij om de generalisatie ![]() | ||||||
Catbert | donderdag 21 oktober 2010 @ 21:03 | |||||
quote:Niks mis met .Net. quote:Zal best, maar voor grote projecten wordt het erg weinig gebruikt. | ||||||
minibeer | woensdag 27 oktober 2010 @ 20:09 | |||||
even iets heel anders, kan iemand mij vertellen wat het voordeel is van het gebruik van interfaces boven het gebruik van abstracte classes? want eigenlijk heb ik tot nu toe alleen maar nadelen gehoord, ze zijn langzamer etc. En volgens mij is alles wat je met interfaces kan ook met abstract classes te doen, of niet? | ||||||
netolk | woensdag 27 oktober 2010 @ 23:11 | |||||
quote:De interface zorgt er voor dat je alleen dingen met een class kan doen die de programmeur wil dat je er mee kan | ||||||
Cruise.Elroy | donderdag 28 oktober 2010 @ 10:44 | |||||
quote:Zo ver ik weet heb je geen interfaces in C++ omdat C++ gewoon multiple inheritence ondersteunt. In Java (en C# ?) is het "voordeel" van interfaces dat je er meerdere kan inheriten in één klasse. Een interface is in C++ gewoon een abstract class met alleen maar virtual abstract functies. En er is geen winst tov. 'normale' abstract classes in C++. Over waarom je in java en C# geen multiple inheritence hebt maar wel interfaces zijn boeken volgeschreven, dat moet je maar even googlen. Heeft te maken met diepe OOP-zen en rare cases die je daardoor vermijdt. | ||||||
minibeer | donderdag 28 oktober 2010 @ 12:22 | |||||
quote:ah tuuuurlijk ik had gehoord dat interfaces minder verwarrend zijn (omdat je dan alle methoden moet overnemen ofzo?) | ||||||
netolk | donderdag 28 oktober 2010 @ 12:25 | |||||
quote:Dat klopt idd, maar het is net wat je handig vind | ||||||
Green1 | donderdag 28 oktober 2010 @ 14:11 | |||||
Zou C++ iets voor mij zijn om me in te verdiepen? Ik wil gewoon wat simpele tooltjes maken.. En ik wil in de (verre) toekomst ook wat andere talen gaan leren.. Ik heb al eens een boekje over C# gekocht, maar dat ging vooral over visual studio. En dit betrof vooral wat je precies aan moest klikken om visual studio de code voor je te laten maken, en dat vond ik niks. Dus C# als taal viel voor mij af.. ook omdat het, volgens mij, vooral voor windows is.. Maar ik wil dus kleine commandline tooltjes voor linux en windows maken. Ik heb nog niet echt een concreet idee.. Misschien een backup programma'tje ofzo. Maar is het verstandig om hiervoor C++ te leren, zodat ik daar later verder mee kan, of kan iemand een andere taal aanraden? Ik heb vrij veel, al zeg ik het zelf, ervaring met php.. | ||||||
netolk | donderdag 28 oktober 2010 @ 14:16 | |||||
met C++ is zoiets prima te doen. Ik vind het een fijne taal net zoals veel anderen maar er zijn er ook die het helemaal niks vinden en liever visual studio de code laten maken | ||||||
Cruise.Elroy | donderdag 28 oktober 2010 @ 15:11 | |||||
quote:Voor simpele tools met een user interface is C# echt veel makkelijker. En ja dat is het wel waard om je in te verdiepen. ![]() ![]() | ||||||
minibeer | donderdag 28 oktober 2010 @ 15:30 | |||||
quote:hoe zit het eigenlijk met comptabiliteit? ik heb hier nooit zo'n beeld van aangezien ik eigenlijk alleen maar op windows draai | ||||||
Trollface. | donderdag 28 oktober 2010 @ 16:38 | |||||
quote:Pure C++ draait gewoon op elk platform. C# daarentegen niet, tenminste niet zonder emulatielagen. | ||||||
netolk | donderdag 28 oktober 2010 @ 16:38 | |||||
Mac en Windows draaien zeker C++, en volgens mij word C++ op de andere bekende besturingssystemen ook ondersteund maar dat weet ik niet helemaal zeker | ||||||
Trollface. | donderdag 28 oktober 2010 @ 16:38 | |||||
quote:C/C++ werd gebouwd op Unices, dus voeg zowat alle UNIX-based besturingssystemen ook maar toe. ![]() | ||||||
TeringHenkie | donderdag 28 oktober 2010 @ 22:31 | |||||
Als ze nou WinForms porten naar native Win32/C++, dan zou sweeeeet zijn ![]() | ||||||
whosvegas | vrijdag 29 oktober 2010 @ 14:35 | |||||
quote:Waarom zou je dat willen? | ||||||
Green1 | vrijdag 29 oktober 2010 @ 17:51 | |||||
quote:Wat me ook zo irriteerde was, wanneer ik zelfs een simpel hello world maakte. Dat er dan op de één of andere manier een installer bij kwam te zitten, die allerlei zooi eromheen zette. Ik weet de extensies van de bestanden niet meer, maar dat wil ik gewoon niet. Ik wil gewoon een .exe en klaar. Als ik een installer zou willen, dan wil ik dat zelf wel leren, en niet zo'n automatisch voorgekauwd ding.. Maar ik weet niet of dat nu iets van C# is, of van visual studio? | ||||||
minibeer | vrijdag 29 oktober 2010 @ 18:09 | |||||
quote:dat hoeft niet hoor, je kan ook de .exe uit de projectmap pakken. | ||||||
minibeer | vrijdag 29 oktober 2010 @ 21:34 | |||||
quote:Ik heb hier niet zo veel verstand van, maar is het niet zo dat je de code in de praktijk alsnog moet aanpassen, omdat je een andere compiler nodig hebt? | ||||||
Catbert | vrijdag 29 oktober 2010 @ 23:05 | |||||
quote:Lag echt aan jezelf. Verkeerde projecttype waarschijnlijk. Ik krijg gewoon 1 exe en (alleen in debugmode) een PDB. | ||||||
Catbert | vrijdag 29 oktober 2010 @ 23:06 | |||||
quote:Een OS 'draait' helemaal geen C++. Het 'draait' een executable, en of het oorspronkelijk C++ was daar heeft het OS geen weet van. | ||||||
TeringHenkie | vrijdag 29 oktober 2010 @ 23:36 | |||||
quote:Omdat GUIs in native C++/Win32 maken een hel is, je moet lopen klooien met hwnds en device contexts en weet ik veel, is gewoon ontzettend veel code. | ||||||
netolk | zaterdag 30 oktober 2010 @ 11:20 | |||||
quote:Als het gewoon een console programmatje is hoef je je code niet aan te passen, maak je echter een window ed. dan moet je het wel aanpassen omdat window's bij Windows anders werken dan bijv. bij mac | ||||||
thabit | zaterdag 30 oktober 2010 @ 11:25 | |||||
quote:Was het maar zo'n feest. Zo'n beetje alle systeemfunctionaliteit werkt in Windhoos anders dan in Linux. En C++ is niet een taal die op dergelijke porteerbaarheid gefocust is. | ||||||
netolk | zaterdag 30 oktober 2010 @ 15:34 | |||||
quote:volgens mij is int i = 4; i+= 8; nog steeds i=12 of dit nou op windows of op linux draait | ||||||
whosvegas | zaterdag 30 oktober 2010 @ 16:37 | |||||
Wat denk je van Java? Voordeel van Java ten opzichte van .NET is dat Java wel op alle platforms draait (als er maar een JVM voor dat platforn is). En je hoeft je niet bezig te houden met dingen als het vrijgeven van geheugen, dat doet Java voor je! In C++ kunnen fouten ontstaan door verkeerd gebruik van pointers, in Java en C# heb je die moeilijkheden niet. En wat betreft snelheid hoef je C# of Java ook niet te laten, alleen als je zeer kritische applicaties gaat maken, die veel berekeningen moet doen, zal C++ in het voordeel zijn. In het bedrijfsleven, wordt hoofdzakelijk gebruik gemaakt van Java of C#. C++ wordt gebruikt in de wetenschappelijke wereld (samen met Fortran) of om drivers ofzo te maken. Ook in de game wereld wordt nog veel C++ gebruikt. Maar als je voor deze banen in aanmerking wilt komen, ben je zo'n guru, dat je de vraag niet hoeft te stellen. ![]() Dus als je begint met programmeren, vergeet C++ maar. Met C# of Java kun je als beginner meer dan genoeg. | ||||||
minibeer | zaterdag 30 oktober 2010 @ 19:33 | |||||
even een kleine c# vraag.
Wat doe ik verkeerd? | ||||||
minibeer | zaterdag 30 oktober 2010 @ 19:39 | |||||
![]() Java = compabiliteit c++ = snelheid c# = makkelijk windows user-interfaces maken in java werkt de user-interface ongeveer hetzelfde als in c#(ik dacht dat het ingewikkelder was, maar dat lag geloof ik gewoon aan het boek, dat gebruikte altijd panelen ipv de location) | ||||||
minibeer | zaterdag 30 oktober 2010 @ 19:41 | |||||
Ja. Maar dit zal wel niet voor alle code gelden. | ||||||
Catbert | zaterdag 30 oktober 2010 @ 20:19 | |||||
Ja, maar zo makkelijk is het niet, dat weet je zelf ook wel. Afgezien van de standaard libraries is C++ compleet niet platformonafhankelijk. Hij kent "Func" niet, staat er letterlijk. Zorg dat je die .DLL waar deze in zit include in je project en ook de namespace include. Er is overgeins een .Net topic. C# heeft geen hol met C++ te maken. | ||||||
minibeer | zaterdag 30 oktober 2010 @ 20:28 | |||||
er zit allebei een c in ![]() nee ik heb het .net topic niet gezien, maar dit is ook niet echt .net geloof ik, lamba expressies horen gewoon bij c# 3.0 | ||||||
Catbert | zondag 31 oktober 2010 @ 00:25 | |||||
C# is .Net, vragen daarover horen gewoon in het .Net topic. In ieder geval niet hier. | ||||||
minibeer | zondag 31 oktober 2010 @ 00:54 | |||||
ikkannemnietvinden ![]() en ja ik heb al de zoekfunctie gebruikt | ||||||
netolk | zondag 31 oktober 2010 @ 08:58 | |||||
klopt is idd weg... wel raar | ||||||
thabit | zondag 31 oktober 2010 @ 11:18 | |||||
Beter zoeken: Micorosft.NET - Deel 2 | ||||||
Wolfje | zondag 31 oktober 2010 @ 12:27 | |||||
Voor kleine commandline tooltjes kun je beter een scripttaal (python is een aanrader) gebruiken. Dat scheelt weer wat compileer gedoe en je hebt betere string manipulatie methoden. | ||||||
minibeer | zondag 31 oktober 2010 @ 14:29 | |||||
ligt eraan, als je ook wat cpu intensievere taken doet zou ik toch al snel gaan compileren, dan moet je die string methoden zelf maar schrijven als je ze nodig hebt | ||||||
thabit | zondag 31 oktober 2010 @ 14:35 | |||||
Je kan ook Cython gebruiken om Pythoncode te versnellen. | ||||||
minibeer | zondag 31 oktober 2010 @ 14:52 | |||||
![]() | ||||||
netolk | zondag 31 oktober 2010 @ 17:11 | |||||
in console mode kon je de pixels niet apart aansturen toch? Dan heb je in Windows toch zo'n winapi ding voor nodig? | ||||||
minibeer | zondag 31 oktober 2010 @ 18:12 | |||||
op 16-bit systemen kon je dacht ik nog in een graphics mode komen door middel van interrupts, maar ik geloof dat dat soort dingen er nu niet meer inzitten, en de console window dus idd alleen voor tekst is (maar ik ben ook niet van alles op de hoogte hoor ![]() | ||||||
netolk | zondag 31 oktober 2010 @ 19:10 | |||||
Tja daar was ik al bang voor ![]() | ||||||
TeringHenkie | zondag 31 oktober 2010 @ 19:22 | |||||
Is nogal logisch, aangezien de command line puur command line is. Iedereen ziet het als een soort van DOS, maar dat is dus niet zo. | ||||||
FastFox91 | zondag 31 oktober 2010 @ 21:11 | |||||
C++newbie hier. Hoe kan ik het beste de code realiseren zoals hieronder is geprobeerd. Liever geen vectoren. Hoewel ik nog weinig weet van pointers, lukte het mij wel om dit op te lossen voor een enkel dimensionale array, maar niet voor een multi dimensionale array.
| ||||||
thabit | zondag 31 oktober 2010 @ 21:30 | |||||
Je moet altijd bedenken dat de compiler moet kunnen afleiden hoeveel geheugen een object van je klasse inneemt. Een array als int[][] declareren gaat hem dus niet worden, want de compiler weet dan niet hoe groot de array is. Als je een array van niet van tevoren gedefinieerde grootte wilt aanmaken, moet je dat dus op de heap doen. Met vectoren werken lijkt me dan het handigst. Wil je dat niet doen, dan zul je array als een int** moeten declareren, in de constructor array = new int*[y] doen en dan in een lus array[i] = new int[x] voor elke i. Vergeet ook niet een delete op al die zaken uit te voeren in je destructor. ![]() | ||||||
FastFox91 | zondag 31 oktober 2010 @ 21:42 | |||||
Ik begrijp waarom mijn poging niet werkte, het was even een manier om duidelijk te maken wat ik wilde. Persoonlijk wil ik ook liever vectoren gebruiken, maar de opdracht wenst dat er een array gebruikt wordt. Morgen toch maar even discussiëren met mijn docent. Slimme oplossing, zo met de lus. Dat delete voorkomt dat er een memory leak plaatsvindt? Om nog even andere oplossingen te overwegen. Een constante maken voor y en x, en die te gebruiken bij het declareren? Of een multidimensionale array meegeven als parameter in de constructor en dan op een of andere manier een nieuwe member aanmaken, die niet is gedeclareerd, als dit mogelijk is? Iig bedankt voor je reactie(s). | ||||||
thabit | zondag 31 oktober 2010 @ 21:56 | |||||
Ja, delete voorkomt memory leaks. Een nieuwe member aanmaken kan niet, C++ is geen Python. ![]() | ||||||
FastFox91 | zondag 31 oktober 2010 @ 22:06 | |||||
Oke. Bedankt voor je antwoord. | ||||||
Catbert | zondag 31 oktober 2010 @ 23:43 | |||||
Die discussie ga je verliezen. Je 'moet' leren datastructuren als vectors e.d. zelf te maken, dat is een onderdeel van je opleiding. Je mag bij dit soort opdrachten nooit collections gebruiken. | ||||||
Cruise.Elroy | maandag 1 november 2010 @ 11:04 | |||||
Je kan het als matrix opslaan, maar ook als een lijst van [x,y,waarde] triplets.
![]() Anders zou ik je aanraden een matrix-classe te maken van een vaste grootte met een equals-operator om data over te zetten. Daarna een klasse maken die deze matrices weer gebruikt om een variabele grootte te realiseren:
| ||||||
FastFox91 | maandag 1 november 2010 @ 16:38 | |||||
@Catbert Je hebt gelijk gekregen. ![]() @Cruise.Elroy Dit gaat nog even wat te ver voor mijn niveau en is waarschijnlijk ook wel beetje te veel van het goede voor m'n opdracht. Waarschijnlijk zoek ik in de toekomst je post nog wel eens op. | ||||||
Cruise.Elroy | dinsdag 2 november 2010 @ 11:41 | |||||
Ik zou er een linked list van matrices van maken denk ik. Krijg je echt enorm leuke code, en nog efficient in geheugengebruik ook. (alleen niet heel snel ![]() | ||||||
Catbert | dinsdag 2 november 2010 @ 11:44 | |||||
Klinkt als een enorme teringzooi, maargoed. Als je een 2D array nodig hebt, moet je niet opeens met rare zaken gaan klooien. | ||||||
Cruise.Elroy | dinsdag 2 november 2010 @ 11:53 | |||||
Rare zaken? ![]() Ik zou wss apart verticaal en horizontaal resizen afhandelen, en elk nieuw blok erbij in een linked list zetten. Elk blok kan je dan indexen als elke statische 2D array ![]() [ Bericht 18% gewijzigd door Cruise.Elroy op 02-11-2010 17:54:31 ] | ||||||
netolk | woensdag 3 november 2010 @ 22:48 | |||||
Hoe maak je zo'n linked list dan? | ||||||
Catbert | woensdag 3 november 2010 @ 23:28 | |||||
Dat bedoel ik dus... | ||||||
Cruise.Elroy | donderdag 4 november 2010 @ 07:54 | |||||
Oh kom op, een LL is naast een standaard array wel de meest basic manier van data opslaan. http://en.wikipedia.org/wiki/Linked_list | ||||||
Catbert | donderdag 4 november 2010 @ 10:03 | |||||
Je hoeft mij niet te vertellen wat een linked list is. Het punt is dat hij voor z'n opleiding C++ aan het leren is, en net met arrays begint. Dan zou je moeten snappen dat hij A) de opdracht uit moet voeren zoals beschreven en B) we het niet onnodig complex moeten maken. | ||||||
thabit | donderdag 4 november 2010 @ 10:14 | |||||
Ik vind het wel raar hoor, dat mensen eerst met programmeertalen beginnen en daarna pas met algoritmen en datastructuren. Andersom zou beter zijn. | ||||||
Catbert | donderdag 4 november 2010 @ 10:25 | |||||
Het is wat lastig practicumopdrachten uit te voeren als je geen taalen kent waarin je dat uitvoeren kunt doen. Je kunt zoveel theorie leren, maar een DSW tree kunnen implementeren zul je toch echt gewoon een keer moeten doen om 't te snappen. Ik heb zelf HBO-I gedaan en wij hadden destijds het probleem dat de het praktijkdeel van het vak C++ verplaatst hadden naar het vak Algorithmen. En toen was opeens de docent C++ ziek en mochten we implementaties van Algorithmen (Huffman / LZW) in C++ doen terwijl we daar nog geen les in hadden gehad. Dat ging ongeveer zo: CODERDECODE *compile* execute! "SEGMENTATION FAULT. CORE DUMPED" Wut? | ||||||
FastFox91 | donderdag 4 november 2010 @ 10:45 | |||||
Praten jullie nog steeds over dat probleempje van mij? ![]() Heeft C++ geen interessantere, van hoger niveau, onderwerpen waarover te discussiëren valt? | ||||||
Catbert | donderdag 4 november 2010 @ 10:51 | |||||
Nee, C++ is gewoon saai. ![]() | ||||||
netolk | donderdag 4 november 2010 @ 11:22 | |||||
Ow heet dat zo XD | ||||||
netolk | maandag 8 november 2010 @ 23:12 | |||||
Even een vraagje wat kost een lege vector aan geheugen? is dit niks of is dit wel wat en afhankelijk van wat de vector stored? | ||||||
thabit | dinsdag 9 november 2010 @ 00:03 | |||||
Elk object neemt geheugen in. Hoeveel precies hangt van de implementatie van vector af en is niet door de standaard gedefinieerd. Maar ik neem aan dat een vector toch in elk geval z'n lengte zal opslaan, een pointer naar de beginwaarde en bovendien een stukje geheugen reserveert om dingen in te stoppen (je wil namelijk niet elke keer als je iets in die vector stopt een nieuw stuk geheugen moeten vrijmaken om vervolgens je oude vector daarheen te verplaatsen). | ||||||
Cruise.Elroy | dinsdag 9 november 2010 @ 07:01 | |||||
bron: http://social.msdn.micros(...)5b-a739-5cd311bc21c4Ik heb nog wat lopen spitten, en het lijkt dat er minstens 4 bytes verloren lijken te gaan, iig 3 jaar geleden nog wel ![]() Leesvoer: http://blogs.msdn.com/b/f(...)ector-data-size.aspx Wat ik er zelf van weet: elke vector heeft sowieso 3 pointers, de MyFirstIter kan je met elke intellisense-GUI ook wel zien staan, dus dat maakt 16 bytes. Waarom de _Aval 1 byte is weet ik niet want het is een stateloos object. [ Bericht 4% gewijzigd door Cruise.Elroy op 09-11-2010 10:49:53 ] | ||||||
netolk | dinsdag 9 november 2010 @ 13:34 | |||||
oke bedankt voor de info... Bedacht later hèhè dat ik het ook via sizeof had kunnen weten ![]() @Cruise.Elroy txs voor de extra info | ||||||
thabit | dinsdag 9 november 2010 @ 14:00 | |||||
sizeof laat natuurlijk alleen de ruimte zien die het object zelf inneemt, niet de extra geheugenruimte die het reserveert. | ||||||
Cruise.Elroy | dinsdag 9 november 2010 @ 14:04 | |||||
Je mag van STL verwachten dat een lege container geen heap gaat aanspreken. Grappig genoeg gebeurt dit wel op de PS3 of X360 (weet niet meer welke) | ||||||
netolk | dinsdag 9 november 2010 @ 14:52 | |||||
Das best wel slecht... wel grappig idd | ||||||
Cruise.Elroy | dinsdag 9 november 2010 @ 15:50 | |||||
Het levert echt vreselijke bugs op als je multi-platform en met heap management werkt. ![]() | ||||||
netolk | woensdag 24 november 2010 @ 15:32 | |||||
Vraagje als je een library in je compiler ramt compiled die dan compleet mee of alleen de stukken code die je daadwerkelijk gebruikt? | ||||||
Catbert | woensdag 24 november 2010 @ 15:34 | |||||
Je compiler? Je linker bedoel je. Als je statisch linked wordt alles meegenomen. | ||||||
netolk | woensdag 24 november 2010 @ 17:25 | |||||
Hèhè ja dat bedoel ik ja... oké dus als je maar 1 functie nodig hebt kun je die beter apart in een cpp file zetten en die compilen +linken? | ||||||
thabit | woensdag 24 november 2010 @ 17:30 | |||||
Of dynamisch linken. | ||||||
netolk | woensdag 24 november 2010 @ 18:18 | |||||
Ja maar dat klinkt al moeilijk XD ik gebruik minGW kan die dat überhaupt wel? | ||||||
thabit | woensdag 24 november 2010 @ 18:48 | |||||
Je kan de libraries vast wel in een DLL stoppen, maar het beste antwoord op zulke vragen blijft nog altijd: RTFM. ![]() | ||||||
netolk | woensdag 24 november 2010 @ 19:41 | |||||
Ja, nou beetje dll's maken... dan plak ik de code die ik nodig heb wel gewoon ff in een cpp bestandje die ik dan ff aan mn linker mee geef... bedankt in ieder geval | ||||||
Cruise.Elroy | donderdag 25 november 2010 @ 10:20 | |||||
Let wel dat DLLs dynamisch linken, als je gewoon statisch linkt dan zal de linker slim knippen/plakken en alleen de dingen meenemen die het nodig heeft. Maareh, is de grootte van je exe zo belangrijk? ![]() Compileren van libraries doet hij sowieso niet, want die zijn als het goed is al gecompileerd. Of heb je het over .h files toevoegen? Die worden als het goed is allemaal in pre-compiled headers gezet als je dat aanzet, en zullen sowieso niet meer dan een syntax-check krijgen als je ze niet gebruikt. | ||||||
Catbert | donderdag 25 november 2010 @ 10:31 | |||||
Bovendien, wat boeit het dat je executable wat groter wordt? | ||||||
Cruise.Elroy | donderdag 25 november 2010 @ 11:16 | |||||
Hij heeft het volgens mij over compile-tijden. Dan maakt het niet uit of je statisch of dynamisch linkt, de libraries zelf zijn natuurlijk al gecompileerd. ![]() | ||||||
Catbert | donderdag 25 november 2010 @ 11:19 | |||||
Normaal hercompile je alleen de code die gewijzigd is. Als je voor elke build alles opnieuw compiled doe je sowieso iets niet goed. Daarnaast gaf 'ie na mijn reactie aan dat het om het linken ging, en linken gaat sowieso heel snel. | ||||||
Cruise.Elroy | donderdag 25 november 2010 @ 13:46 | |||||
Linken is in mijn ervaring vaak een traag onderdeel omdat je het moeilijk distributed kan doen (iaw, er zijn weinig pakketten die dat ondersteunen) tenzij ik moduleinterfaces ga veranderen is linken snel 50% van de buildtijd. ![]() | ||||||
thabit | donderdag 25 november 2010 @ 14:57 | |||||
Dat terwijl dat hele gebeuren van headers includen, compilen en linken bedoeld was om het snel te laten werken. In deze tijd van snelle processoren en parallellisatie vertraagt het de boel alleen maar. Een soort QWERTY-achtige taferelen dus. | ||||||
Cruise.Elroy | donderdag 25 november 2010 @ 15:19 | |||||
Het vertraagt niets, juist door het losse compilen en linken, headerfiles etc. kan je goed gebruikmaken van parallelisatie. Helaas moet het toch ergens bijelkaar komen. | ||||||
netolk | donderdag 25 november 2010 @ 16:44 | |||||
ik bedoelde idd linken, ja... Op zich maakt het niet zo veel uit als mn .exe iets groter word maar hou er niet van als er onnodig geheugen gebruikt word.. en ik vind de lib echt bagger maar er zitten 1 of 2 handige functies in die ik soms gebruik voordat ik er een win32 programma van een console maak | ||||||
Cruise.Elroy | donderdag 25 november 2010 @ 16:48 | |||||
Enige geheugenverbruik dat je hebt is dat de exe die moet worden ingeladen iets groter is. Een lib zelf bestaat eigenlijk altijd puur uit instructies en gebruikt geen extra resources ofzo, misschien een static var hier en daar, maar dat is echt te verwaarlozen denk ik. | ||||||
netolk | vrijdag 26 november 2010 @ 18:19 | |||||
Goedenavond Fokkers, Ik vraag me af waarom de volgende code flipt..
Het progje runt tot het einde/begin van catch(Error e) weet iemand waardoor dit komt? de constructor van class Game Werkt zoals zou horen (dus zonder fouten dat heb ik al gecheckt) maar ik snap maar niet waarom hij aan het einde/begin van catch vast loopt... | ||||||
thabit | vrijdag 26 november 2010 @ 19:03 | |||||
Wat is e._DATA voor type? | ||||||
netolk | vrijdag 26 november 2010 @ 19:11 | |||||
Sorry vergeten er bij te zetten maar dat is een const char* waar ik dan een string in stop, maar er word dus geen throw Error gedaan... Kom er net achter dat het niet perse aan try catch deel ligt.. als ik dat er uit haal dan krijg ik wel de vraagteken te zien er onderstaat maar daarna flipt ie nog steeds... | ||||||
thabit | vrijdag 26 november 2010 @ 19:16 | |||||
Misschien is het handiger om je couts met endl te eindigen, dan weet je zeker dat de buffer wordt geflusht. Maar goed, grote kans dat er toch een fout in de constructor van Game zit dan. | ||||||
netolk | vrijdag 26 november 2010 @ 19:20 | |||||
De Game constructor gebruikt wel ifstream get(), volgens cplusplus.com dat er std::ios_base::failure word ge-trowed. maar die vang ik af(als het goed is) dus de code is dan dit:
| ||||||
thabit | vrijdag 26 november 2010 @ 19:29 | |||||
Misschien moet je wat couts in je code plaatsen ter debugging (wel met endl eindigen anders komen ze misschien niet op het scherm). Zo kun je zien wat er waar gebeurt. | ||||||
netolk | vrijdag 26 november 2010 @ 20:24 | |||||
Heb ik dus gedaan en alles word tot en met onder aan de try uit gevoerd en de catch word niet aangeroepen, wat wel zou moeten aangezien het bestand minder data bevat dan ik probeer te lezen dus zou er een ios_base::failure moeten zijn maar die word dus niet ge-trowed... | ||||||
netolk | vrijdag 26 november 2010 @ 20:49 | |||||
ik kom er nu achter dat get() helemaal geen error geeft als file minder lang is maar er een waarde van -1 (int) terug geeft, dat kan gewoon in de code dus dan snap ik helemaal niet waarom mn progje flipt.. | ||||||
thabit | vrijdag 26 november 2010 @ 21:04 | |||||
Kun je de code posten die de file inleest? | ||||||
netolk | vrijdag 26 november 2010 @ 21:12 | |||||
Tuurlijk maar dat is dus redelijk lang...
| ||||||
thabit | vrijdag 26 november 2010 @ 21:33 | |||||
Tjezus wat een hoop code voor zo'n simpele handeling. Zoiets moet je echt compacter proberen te schrijven, zonder alles tig keer te herhalen. Verder kan ik niet direct zien wat er fout is. Zou natuurlijk ook in dingen als Level, Player en BitField of zo kunnen zitten. Kun je dat ook misschien posten? | ||||||
netolk | vrijdag 26 november 2010 @ 22:40 | |||||
Ja ik weet het maar omdat het binair is, gebruik ik bitfields om naar unsigned short te kunnen casten... hoe kan je zoiets dan compacter opschrijven?? Bitfield:
Player: (weet zeker dat dit werkt apart getest)
Level:
[ Bericht 19% gewijzigd door netolk op 26-11-2010 22:42:17 (Class player vergeten) ] | ||||||
thabit | vrijdag 26 november 2010 @ 22:58 | |||||
Level is niet goed, je initialiseert een pointer die naar een array verwijst die je na het verlaten van de constructor van Game weggooit. Kortom, die informatie ben je dan gewoon kwijt. Daarbij wordt er in de destructor van Level ook nog een array gedeletet die niet met new is aangemaakt, naar een weggegooide datastructuur verwijst en dus volkomen ongedefineerd is. Ik denk dat het programma wel eens vast zou kunnen lopen bij het uitvoeren van deze destructor. | ||||||
netolk | vrijdag 26 november 2010 @ 23:07 | |||||
Ow hèhè dat klinkt idd wel logisch, helemaal vergeten dat ik dat aangepast had zonder te kijken of het wel kon... kan ik het dan zo oplossen?
Want ik kan data niet deleten omdat _DATA (uit level) het zelfde gebruikt toch? | ||||||
thabit | vrijdag 26 november 2010 @ 23:15 | |||||
Je kan bijvoorbeeld een aparte functie schrijven die als input een fstream& heeft en als output een unsigned short, en ook eentje voor een unsigned long. | ||||||
netolk | vrijdag 26 november 2010 @ 23:19 | |||||
Maar krijg je dan niet dat je progje het bestand opent,sluit,opent,sluit ect? | ||||||
thabit | vrijdag 26 november 2010 @ 23:25 | |||||
Lijkt me een foutgevoelige oplossing. Ik zou _DATA gewoon als vector<Piece> definieren en geen array Piece data[nogwat] in Game::Game aanmaken (sowieso moet je geen arrays op de stack aanmaken, kun je stack overflows van krijgen), maar ook gewoon als vector definieren (of direct _LEVEL._DATA aanspreken, gaat sneller). | ||||||
thabit | vrijdag 26 november 2010 @ 23:26 | |||||
Nee, je kan dat ding toch geopend houden tot hem niet meer nodig hebt. Die functie die die informatie inleest moet natuurlijk zelf geen bestanden openen en sluiten. | ||||||
netolk | vrijdag 26 november 2010 @ 23:47 | |||||
Ja, de oplossing werkt ook niet XD en wil ik het laten werken dan is het idd best wat gekut om voor elkaar te krijgen.. ik had me dat inderdaad ook al bedacht gewoon die Read door geven en dan moet het lukken (hoop ik) in ieder geval hartstikke bedankt voor de hulp | ||||||
minibeer | zaterdag 27 november 2010 @ 20:11 | |||||
Hoi, ik ben nu een programma (ContextFree heet het, ik ben de commandline aan het debuggen) geschreven in C++ aan het debuggen, omdat hij een 'gdi+ error' gaf (een invalid parameter om precies te zijn). Ik weet dat het programma wel werkt op mijn andere computer, met win vista (hij werkt niet op windows 7). Ik weet nu vrij zeker dat de error in een bepaalde functie voorkomt. Deze functie is gedefinieerd in een header file, maar als ik de header file vervang heeft dit volgens mij weinig zin, omdat de functie zelf zich in een andere file bevindt (toch?). Ik vroeg me af hoe je kan weten in welke file deze functie dan wel zit. | ||||||
netolk | maandag 29 november 2010 @ 11:26 | |||||
Als er in de header file alleen iets staat als
Ow enne die int par, char* string zijn voorbeeld parameters ze kunnen van alles zijn | ||||||
netolk | maandag 29 november 2010 @ 11:30 | |||||
Bedankt man nu is mn code even een stukje overzichtelijker ![]() | ||||||
minibeer | maandag 29 november 2010 @ 13:29 | |||||
Beh ik snap er niks van. De maker heeft gereageerd met dit: Heh, ik snap het. Ergens werd een functie aangeroepen op deze manier:
Maar dat werkte niet volgens die gast, het moet zo:
En nu werkt het ![]() ![]() Bedankt voor de hulp ![]() | ||||||
Flaccid | dinsdag 21 december 2010 @ 11:35 | |||||
Ik weet niet hoe moeilijk het is, maar is er iemand die voor mij de source can compilen zodat ik de software zonder al te veel moeite kan gebruiken? Ben bezig met een project waar we van een houten picnictafel een interactieve willen maken, en tracking is dan best relaxt ![]() http://sites.google.com/site/tarandeep/fingermouse | ||||||
netolk | woensdag 22 december 2010 @ 11:30 | |||||
De code mist libs ofzo, maar bij compileert het niet zo 1, 2, 3 | ||||||
netolk | zondag 2 januari 2011 @ 17:55 | |||||
Hey ik heb een vraagje, of eigenlijk wil ik bevestiging bij de volgende code is het toch zo dat myData ook niet meer bestaat na het aanroepen van de destructor via de pointer?
| ||||||
thabit | zondag 2 januari 2011 @ 18:26 | |||||
Het enige wat die destructor doet is myData.i op 0 zetten, verder bestaat myData nog wel gewoon. | ||||||
netolk | zondag 2 januari 2011 @ 19:01 | |||||
ok, is er een manier om hem te verwijderen zonder met scopes te hoeven werken? | ||||||
TeringHenkie | zondag 2 januari 2011 @ 19:16 | |||||
myData op de heap aanmaken ipv. op de stack? | ||||||
netolk | zondag 2 januari 2011 @ 20:16 | |||||
Ja, dat zou idd kunnen want dan kan ik hem gewoon opruimen met delete toch? | ||||||
thabit | zondag 2 januari 2011 @ 20:27 | |||||
Mits je hem aanmaakt met new. De destructor die je daar hebt is trouwens vrij zinloos: je zet iets op 0 wat je daarna toch weggooit. | ||||||
netolk | zondag 2 januari 2011 @ 21:28 | |||||
Ik weet dat de destructor hier zinloos is, dacht in eerste instantie dat ie dan weggegooid werd bij het aanroepen van de destructor maar dat is dus niet zo... Hoe kan je anders iets op de heap zetten dan? | ||||||
FastFox91 | zondag 2 januari 2011 @ 21:30 | |||||
Met windows.h heb ik een HWND van een andere applicatie. De applicatie heeft een tabel die ik wil uitlezen en gebruiken. Is dat mogelijk (met HWND) of ergens anders mee? Ben nog niet zo lang bezig met c++ en ik heb een aanwijzing nodig naar de goede richting. | ||||||
netolk | zondag 2 januari 2011 @ 21:31 | |||||
Ik weet dat het kan, je hebt programma's die het gehele geheugen dat gebruikt word door een programma kunnen lezen/wijzigen weet alleen niet of het met een HWND kan | ||||||
TeringHenkie | zondag 2 januari 2011 @ 21:40 | |||||
Ik denk dat hij die HWND verkrijgt uit een .dll-etje ofzo, FastFox91 moet even wat specifieker zijn ![]() | ||||||
thabit | zondag 2 januari 2011 @ 21:45 | |||||
Je kan het bij aanvang van het programma op de heap declareren. | ||||||
FastFox91 | zondag 2 januari 2011 @ 21:46 | |||||
@TeringHenkie Simpel, of bedoel je dit niet?
![]() [ Bericht 7% gewijzigd door FastFox91 op 02-01-2011 22:02:28 ] | ||||||
netolk | zondag 2 januari 2011 @ 22:43 | |||||
Oe dat klinkt interessant vertel! Kan ik het dan ook via een pointer verwijderen van de heap? | ||||||
TeringHenkie | maandag 3 januari 2011 @ 00:38 | |||||
Shared objects/shared memory is denk ik de term die het meeste raakte met wat jij wil. | ||||||
TeringHenkie | maandag 3 januari 2011 @ 00:41 | |||||
Gewoon
| ||||||
netolk | maandag 3 januari 2011 @ 13:37 | |||||
joh, alleen werd er gesuggereerd dat het ook zonder new kan... ten 2e kan je dit niet verwijderen via een pointer... | ||||||
TeringHenkie | maandag 3 januari 2011 @ 14:45 | |||||
![]() | ||||||
thabit | maandag 3 januari 2011 @ 14:57 | |||||
Zoiets:
| ||||||
netolk | maandag 3 januari 2011 @ 18:03 | |||||
Hmm.. tja dat is ook niet echt een oplossing... het gaat om aardig wat objecten die in runtime gemaakt moeten kunnen worden... maar misschien kan ik het met een scope wel maken...
maarja dit is niet zo netjes kan dit ook beter? | ||||||
TeringHenkie | maandag 3 januari 2011 @ 18:05 | |||||
Yep, alles daarbinnen wordt van de stack geflikkerd na de sluitende haken. | ||||||
netolk | maandag 3 januari 2011 @ 18:06 | |||||
Maar kan dit ook netter? Het liefst op elk moment van je stack te gooien via een pointer oid. | ||||||
netolk | dinsdag 4 januari 2011 @ 17:11 | |||||
Ik heb iets bedacht als ik die data dingen nu eens gewoon in een vector oid zet en zo nu en dan kijk of ze weg kunnen, is dat iets wat redelijk efficiënt is of word het dan gewoon zo'n chaos? | ||||||
TeringHenkie | dinsdag 4 januari 2011 @ 18:14 | |||||
Gebruik anders de Boost libraries, die hebben shared_ptr's. Daarmee wordt automagisch het object verwijderd zodra de enigste referentie ernaartoe verdwijnt. | ||||||
thabit | dinsdag 4 januari 2011 @ 18:25 | |||||
Een andere optie is om geen C++ te gebruiken, maar een taal met ingebouwde garbage collection en op die manier jezelf in de 21ste eeuw te verwelkomen. | ||||||
minibeer | dinsdag 4 januari 2011 @ 20:43 | |||||
weg uit dit topic! de jeugd van tegenwoordig... geen respect meer voor mensen van de oude stempel ![]() | ||||||
netolk | dinsdag 4 januari 2011 @ 21:32 | |||||
Hehe zo oud ben ik nou ook weer niet hoor... minibeer daar in tegen XD Bedankt voor de reacties ik ga het eerst gewoon even met een vector proberen en als dat chaos word kan ik altijd die boost libs proberen | ||||||
Thomass | dinsdag 4 januari 2011 @ 21:37 | |||||
Ik onderschrijf dit. Of je gooit 50 cent naar zon programmeur in ruil voor een programma, hoef je het niet meer zelf te maken | ||||||
thabit | dinsdag 4 januari 2011 @ 21:43 | |||||
De grootste designfout van C++ is natuurlijk dat het niet backwards compatible is met C. | ||||||
TeringHenkie | dinsdag 4 januari 2011 @ 22:16 | |||||
Des te meer C++ 1337 zal blijven | ||||||
Thomass | woensdag 5 januari 2011 @ 11:36 | |||||
Ja? Dus dit is 1337? ![]()
| ||||||
_Led_ | woensdag 5 januari 2011 @ 11:44 | |||||
Want in C# kun je niet
![]() | ||||||
thabit | woensdag 5 januari 2011 @ 12:56 | |||||
Dit is natuurlijk een stuk beter:
| ||||||
Thomass | woensdag 5 januari 2011 @ 13:38 | |||||
Dat bedoelde ik niet nee. Ik ken C# niet, het ziet er in ieder geval afschuwelijk uit ![]() Precies ![]() | ||||||
_Led_ | woensdag 5 januari 2011 @ 13:40 | |||||
Och, die regel kun je ook een heel stuk compacter schrijven hoor, net zoals dat stuk C++ trouwens. Als je wilt kun je in elke taal lelijke code schrijven ![]() | ||||||
netolk | woensdag 5 januari 2011 @ 23:36 | |||||
Ja lelijke code willen we natuurlijk niet hebben hè | ||||||
TeringHenkie | donderdag 6 januari 2011 @ 00:25 | |||||
On-topic, er ging voor mij een hele wereld open toen ik er achter kwam dat je objecten gewoon op de stack aan kan maken ipv. alleen maar op de heap. Hoe ver kun je daar mee gaan? | ||||||
thabit | donderdag 6 januari 2011 @ 10:00 | |||||
Totdat de stack vol zit, daarna krijg je een segfault. ![]() | ||||||
TeringHenkie | donderdag 6 januari 2011 @ 12:43 | |||||
Dus kleine objecten op de stack, grote op de heap zodat die niet gefragmenteerd raakt? | ||||||
netolk | vrijdag 7 januari 2011 @ 14:52 | |||||
Hey, zou deze code anders kunnen?
Ik wil deze classes in een vector<Master> stoppen, maar dan wil ik wel weten wat voor class (sub1,sub2) het is. Is daar een andere oplossing voor dan een enum? | ||||||
minibeer | zaterdag 8 januari 2011 @ 14:17 | |||||
Je zou bijvoorbeeld een memberconstante aan kunnen maken die je bij de een initialiseerd op een andere waarde dan bij de ander. Maar ik geloof dat er betere oplossingen zijn, al weet ik niet precies welke (in c# had je typeof(), maar ik geloof niet dat er zoiets is in c++) | ||||||
netolk | zaterdag 8 januari 2011 @ 21:43 | |||||
Die member constante komt dan toch ongeveer overeen met de oplossing die ik had bedacht? | ||||||
minibeer | zaterdag 8 januari 2011 @ 23:35 | |||||
o, had ik niet gezien ![]() | ||||||
netolk | zondag 9 januari 2011 @ 14:24 | |||||
ahh, vandaar maar er zou dus een betere oplossing moeten zijn... | ||||||
thabit | zondag 9 januari 2011 @ 19:19 | |||||
Je kunt met een dynamic_cast checken of een een pointer naar een base class naar een gegeven afgeleide klasse verwijst. Zie http://en.wikibooks.org/wiki/C++_Programming/RTTI | ||||||
netolk | zondag 9 januari 2011 @ 21:39 | |||||
Zo'n dynamic cast kost zeker wel weer veel resources of niet? | ||||||
thabit | zondag 9 januari 2011 @ 21:45 | |||||
Valt wel mee denk ik, volgens mij bepaalt hij de validiteit van de cast aan de hand van de vtable. | ||||||
netolk | zondag 9 januari 2011 @ 21:57 | |||||
Ow ok, het ziet er wel handiger uit dan zo'n member te maken waar je aan kunt zien wat het is ga het gelijk proberen bedankt | ||||||
thabit | zondag 9 januari 2011 @ 22:07 | |||||
Je kunt bijvoorbeeld ook een virtual method is_Sub1 aanmaken, die false returnt in de base class en true in Sub1. Lijkt me wat schoner dan met rtti kloten. | ||||||
netolk | zondag 9 januari 2011 @ 22:25 | |||||
Hmm, heb het verkeerd begrepen... [ Bericht 92% gewijzigd door netolk op 10-01-2011 14:48:02 ] | ||||||
netolk | maandag 10 januari 2011 @ 14:47 | |||||
Maar hoe doe je zo iets dan? | ||||||
thabit | maandag 10 januari 2011 @ 14:54 | |||||
Zoiets:
| ||||||
netolk | maandag 10 januari 2011 @ 15:05 | |||||
ow ja Xd zo moest dat, maar dan moet ik dus zo'n 7 dingen maken... maar is denk idd wel netter dan die rtti... maar waarom is die const dan eigenlijk?? want je code zegt nu toch gewoon return false | ||||||
thabit | maandag 10 januari 2011 @ 15:16 | |||||
Die const kun je ook weglaten. Is alleen om de compiler te vertellen dat de methode niet aan de members van de klasse loopt te frunniken. Ik denk persoonlijk echter, dat als je een klasse hebt met 7 subklassen waarvoor je type-identificatie nodig hebt, dat dan zeer waarschijnlijk je design voor verbetering vatbaar is. | ||||||
netolk | maandag 10 januari 2011 @ 15:18 | |||||
Ja, waarschijnlijk is het het best om met templates te werken enzo maar dat moet ik dan weer opzoeken hoe dat werkt en dit snap ik teminste redelijk... ben bezig met een spel en dan heb ik een class grondstoffen waar de basis dingen voor elke grondstof instaan en dan een omhulsel voor een specifieke grondstof | ||||||
TeringHenkie | maandag 10 januari 2011 @ 19:11 | |||||
Je kan toch ook een pure virtual method maken in je base class die een waarde uit een enum typeofsubclass oid. returnet? Of denk ik nu te simpel? | ||||||
netolk | maandag 10 januari 2011 @ 21:18 | |||||
Ja dat had ik dus eerst maar toen vroeg ik of het beter kon en kwam er dus die rtti dingen voor maar ik kwam er idd ook al achter dat het makkelijker in gebruik is als ik zo iets doe | ||||||
netolk | woensdag 12 januari 2011 @ 17:24 | |||||
Hey heb een probleempje met m'n headers: Header A:
header B:
nu is het zo dat de compiler error's geeft wat logisch is, normaal loste ik dit op door eerst even een declaratie in zo'n header te zetten maar omdat het nu in een namespace is die nog niet is gedeclareerd werkt dit niet... hoe kan ik dit oplossen? want volgens mij kan je een namespace niet alleen declareren... | ||||||
thabit | woensdag 12 januari 2011 @ 18:02 | |||||
Je declareert in A_Class een member van type B_Class, terwijl het mogelijk is dat B_Class op dat moment nog niet gedefinieerd is. De compiler moet weten hoeveel geheugenruimte een object van een class en daarmee dus ook elke member van die class inneemt. Als je dus dergelijke cross-references wilt toepassen dan moet je dat dus doen middels een pointer of een reference, daarvan ligt namelijk de hoeveelheid geheugenruimte gewoon vast. Je moet dan nog wel forward declaraties class A_class; en class B_class; invoegen. | ||||||
netolk | woensdag 12 januari 2011 @ 18:18 | |||||
Ja die pointer heb ik... maar hoe kan ik een forward declaratie doen als het in een namespace staat? | ||||||
thabit | woensdag 12 januari 2011 @ 18:45 | |||||
Kan dit niet gewoon?
| ||||||
netolk | woensdag 12 januari 2011 @ 19:02 | |||||
nee, dan krijg ik een error in header A, dat _DINGES een incomplete type is | ||||||
thabit | donderdag 13 januari 2011 @ 11:22 | |||||
_Dinges moet natuurlijk wel een pointer of een reference zijn, zoals ik een paar posts terug heb uitgelegd. | ||||||
netolk | donderdag 13 januari 2011 @ 20:05 | |||||
Ow hehe, vet stom vergeten het bestand op te slaan ofzo want nu doet ie het dus wel ![]() hartstikke bedankt | ||||||
nightsleeper | maandag 24 januari 2011 @ 22:00 | |||||
Ik had er al een topic voor geopend (voordat ik deze zag), maar hier dus nog een keer: Ik krijg het niet voor elkaar om met std::ofstream.seekp() te werken. Ik krijg altijd een corrupt bestand. Het gaat mis bij de volgende code
Hou ik daarentegen het bestand open, en zoek ik niet in het bestand, dan gaat het wel goed. Ik moet dan alleen wel de netjes alles in de goede volgorde aan de functie aangeven. De volgende code werkt in dit geval dus wel:
Ik controleer hier dus of de write position correct is, door de uitkomst van tellp() te vergelijken met wat ik verwacht. Dit doe ik in het eerste geval ook, en na de seekp() werkt dit ook. Alleen, het eerste geval creëert een corrupt bestand en ik heb geen idee waar dat door kan komen. De reden dat ik dit werkend wil krijgen is dat dan de gegevens in willekeurige volgorde kunnen worden geschreven. out_file is een member variabele van de class file, article is een smart pointer naar een gedecodeerd usenet artikel. Hoe krijg ik seekp() werkend? | ||||||
netolk | maandag 24 januari 2011 @ 23:59 | |||||
misschien heb je hier iets aan? http://www.cplusplus.com/reference/iostream/ostream/seekp/ krijg je ook een foutmelding (throw) zo ja welke? | ||||||
TeringHenkie | dinsdag 25 januari 2011 @ 00:49 | |||||
Lekker aan het crossposten op GoT? ![]() | ||||||
nightsleeper | dinsdag 25 januari 2011 @ 07:17 | |||||
Daar heb ik al gekeken. Kan daar niets vinden wat aangeeft waarom dit niet zou moeten werken. Ik krijg geen foutmelding. Zoals ik al aangaf, tellp geeft in beide gevallen gewoon de juiste positie aan. Krijg ik die juiste positie echter door een seekp dan werkt het ineens niet. Het beste van beide ![]() | ||||||
Core2 | dinsdag 25 januari 2011 @ 09:06 | |||||
Het is een beetje lastig om daar uitspraken over te doen, aangezien er nogal wat afhankelijkheden aan die functie hangen. Daarnaast maak je gebruik van concurrency, als je ergens een lock vergeet te respecteren in een andere functie kan dat al invloed hebben natuurlijk. | ||||||
minibeer | dinsdag 25 januari 2011 @ 18:44 | |||||
wat doet "->" precies? ik zie het vaak bij "this" gebruikt worden, maar ik weet niet precies wat het betekent ![]() | ||||||
thabit | dinsdag 25 januari 2011 @ 19:01 | |||||
a->b is hetzelfde als (*a).b (tenzij een van de operators overloaded is). | ||||||
minibeer | dinsdag 25 januari 2011 @ 19:05 | |||||
ah, pointers he, ik dacht dat ik ze wel doorhad maar het blijft wennen... bedankt ![]() | ||||||
nightsleeper | woensdag 26 januari 2011 @ 07:42 | |||||
Bedankt voor alle hulp iedereen, het probleem zat hem in het feit dat een bestaand bestand openen en daarin zoeken alles weggooit tenzij je het bestand ook met std::ios_base::in opent ![]() | ||||||
Core2 | woensdag 26 januari 2011 @ 09:57 | |||||
WTF, heb je ergens een bron waar dit wordt uitgelegd? Dat is wel erg maf gedrag. | ||||||
thabit | woensdag 26 januari 2011 @ 10:17 | |||||
http://stdcxx.apache.org/doc/stdlibug/30-3.html Gewoon dat streamgedoe niet gebruiken, het voegt alleen maar een hoop ellende toe. | ||||||
netolk | woensdag 26 januari 2011 @ 20:37 | |||||
gebruik dan ook gewoon std::ifstream dan gaat het altijd goed | ||||||
netolk | donderdag 27 januari 2011 @ 13:28 | |||||
Hey Fokkers, het wil weer eens niet lukken ![]()
nu krijg ik dus de volgende fout melding:
ik snap dit niet want volgens deze link zou dit gewoon legaal moeten zijn... iemand een idee hoe ik dit kan oplossen? [ Bericht 1% gewijzigd door netolk op 27-01-2011 13:33:33 (verkeerde fout code) ] | ||||||
thabit | donderdag 27 januari 2011 @ 20:52 | |||||
| ||||||
netolk | donderdag 27 januari 2011 @ 21:13 | |||||
wtf, dat is gewoon dom van mij... maar dat sterretje is nu dus weg en compileert het wel alleen loopt het programma vast op de eerder geposte code, direct na de reinterpret_cast | ||||||
thabit | donderdag 27 januari 2011 @ 21:45 | |||||
Het probleem zit hem in
Je roept hier een assignment operator aan, terwijl Bptr niet geinitialiseerd is. Kortom, je zit iets naar een min of meer random geheugenadres te kopieren. In plaats daarvan moet je
![]() | ||||||
netolk | vrijdag 28 januari 2011 @ 13:51 | |||||
txs die haakjes hoeven niet ![]() | ||||||
Catbert | vrijdag 28 januari 2011 @ 13:56 | |||||
Tijdje terug maar AFAIK: Met references kun je niet goochelen, een pointer kun je echt overal naartoe laten wijzen. Je kunt met references dus minder snel fouten maken. | ||||||
netolk | vrijdag 28 januari 2011 @ 14:06 | |||||
ow zo, ik weet niet zo veel van reference maar die kan je dan ook gewoon als class.function() gebruiken? als class een reference is naar die class? | ||||||
Catbert | vrijdag 28 januari 2011 @ 14:10 | |||||
Het is erg lang geleden (10 jaar ofzo) dat ik serieus met C++ bezig ben geweest maar ja, in princiepe is het vrijwel hetzelfde als een pointer met het grote verschil dat je in een functie niet aan kunt passen waar een reference naar wijst. In Java en .Net heb je ook alleen references en geen pointers. |