![]() |
ik wil gewoon ff klooten met C++...
Maar ik komt er niet uit... Ik wil een class hebben (zeg obj2) die afstamt van obj1, en die dus ook de properties mee neemt. Ik heb dit: Code:
#include <stdio.h> `class obj2' has no member named `width' Ik wil dus een subclass maken... |
hmmnzzz...
okee informatica valt onder dit forum... maar ik denk dat ze dit bij S&M veeeel beter kunnen beantwoorden dusssss |
|
Naar jouw voorbeeld:
Code:
#include <iostream.h> |
Je vraag lijkt me beantwoord maar mag ik je vragen hoe jij aan obj1::~obj1() komt? Ik kan me niet herinneren dat ik bij C of C++ een ~ heb gebruikt bij dergelijke dingen.
|
Citaat:
|
Citaat:
:D :D Dank! :) Okee... dat is één... :) Vraag 2: Ik heb 3 objecten/classes (obj1, obj2 en obj3). In obj3 wil ik dmv een functie (iets in de trand van addObject() ) een object kunnen toevoegen. Dit kan obj1, obj2 of obj3 zijn. Aan elk van deze toegevoegde objecten, moet ik ook weer objecten kunnen toevoegen, etc... Ik wil een array hebben (objects) waarin de objecten staan die ik heb toegevoegd, dus bijvoorbeeld: Code:
obj3 test; Maak het svp niet tè moeilijk :p :) |
Citaat:
Ik was druk bezig met pointers en dynamissche geheugelallocaties (niet dat ik het kan ;)), enja... dan ga je vanzelf die functies definieren... :D |
zoiets?
Code:
#include <memory.h> |
Citaat:
ooops je wilde het toch statisch in arrays? dacht ik uit je voorgaande posts op te maken :o |
Citaat:
Dat je dus 'new' en 'delete' gebruikt om je subobjecten te maken en verwijderen. :) Toch bedankt voor je moeite! :) (y) *heeft weer iets geleerd* Ik zal misschien later even de code posten die ik heb... :) |
dan moet je er een linked list van maken dus in elke treenode een pointer naar de volgende treenode.. ik zal zo wel ff die code van mij aanpassen
|
Hmm... met een linked list kan ik de subclasses niet direct benaderen...
Mijn code (geexporteerd met Dev-C++) Ik hoop dat mijn idee duidelijk is :) |
Ik heb nu niet zoveel tijd .. maar hier even een voorbeeld waar een ouder meerdere kinderen in een array van pointers heeft staan (had ik nog van mijn opleiding):
Code:
#include <iostream.h> |
Citaat:
Code:
O.kind[0].leeftijd; |
Dan zul je een containing-relatie moeten opbouwen en de [] operator moeten overloaden. Lees mijn samenvatting maar eens goed door :p
We gaan niet al het werk voor je doen :p |
Citaat:
|
Citaat:
Krijg je nogal een zooitje als een object out of scope gaat / ophoudt te bestaan. De pointers wijzen dan naar geheugenadressen die onderwijl misschien door andere objecten worden gebruikt. Idd niet zo slim van me :) |
Citaat:
En je hoeft niet al het werk te doen... alleen even een voorbeeldje in elkaar frutselen ;) |
Citaat:
|
Citaat:
Hieronder even een voorbeeld van operator overloading: Code:
// |
Je kunt nu trouwens een controle inbouwen op de parameter :) daarmee kun je memory overwrites voorkomen en dergelijke :)
|
ik had zelf ook al iets geprobeerd met operator overloading...
Maar het werkte niet echt goed. Ik wou n.l. 2 (of meer) strings bij elkaar optellen... (a = "Blaat" + " whooie") En ja, dat kan niet in C++... Dus die wou ik overloaden, maar... ik snapte het niet :o In jou voorbeeld, waar word die overload toegepast? Bij: Test[0] = 1; of bij cout << Test[0]; Is imo wel belangrijk om te weten... :) |
Citaat:
Hoeveel A4 kantjes? Ik heb nl AOA uitgeprint in de kast liggen, en dat zijn ongeveer 1536 A4 kantjes... |
Citaat:
.. 1019 :) |
Citaat:
ISB nummer? :) *gaat hem misschien kopen* :D :D Staat er ook in hoe je met Windows API's moet werken? |
Code:
class voorbeeld Code:
int& voorbeeld::operator [] (int i) Code:
Test[0] = 1; Code:
cout << Test[0] << "\n"; Veel valt er nu niet meer aan uit te leggen :D |
Citaat:
Ik snap het! :) |
Citaat:
Er staat achter op: ISBN 0-201-70073-5 Citaat:
De Windows API's staan los van C++. Hiervoor zul je een Win32API reference moeten zoeken, of MFC (Visual Studio / C++) of wel VCL/CLX (Borland Builder en Kylix), welke beide C++ wrappers voor de Win32API zijn, moeten leren. Sterkte ;) :p |
Citaat:
Wat duur... Bol.com Citaat:
Citaat:
|
Citaat:
|
Citaat:
|
jah maar dan kan je die ampersand toch ook gewoon weglaten, is nog minder tiepwerk ook! :D
|
Citaat:
|
Waarom werkt dit niet?
In c zou "blub" moeten staan, maar op de derde posistie staat een "?" :confused: Code |
Citaat:
wat je allemaal wel niet over moet hebben voor data hiding! :D |
maar wat ik niet begrijp eddie... waarom moet het op een array lijken :confused:
waarom niet gewoon een GetChild(int) functie? da's veel logischer vind ik |
Citaat:
En zie mijn sig... :) |
tja mooier is jouw mening maar het is geen goeie programmeerstijl... je moet er gewoon niet aan wennen bij OOP.. je moet het juist proberen te voorkomen!
|
Citaat:
|
Citaat:
Een zwakke onderlinge koppeling tussen objecten en een sterke cohesie (gegevens en methoden horen bij elkaar per object) bevorderen de kwaliteit (onderhoudbaarheid) van programmatuur. |
Citaat:
niet zulke 'moeilijke' woorden gebruiken svp, ik snap er niks van! :p :o |
Citaat:
Maar je kunt een GetObject functie toch gewoon een reference laten retourneren? Aan de andere kant is het beter om in de klasse zelf functie's te definieren die bewerkingen uitvoeren op de childs .. zo werkt je code alleen op die ene klasse, en niet direct met de childs. Dat bedoelde ik dus. Dus niet: MyObj->GetObject(x)->MyVal = y; cout << MyObj->GetObject(x)->MyVal; Maar: MyObj->SetVal(x, y); cout << MyObj->GetVal(x); Bij wijze van .. het gaat om het principe van data hiding. |
Citaat:
MyObj->GetObject(x)->GetValue(); Zou ook kunnen eigenlijk. Als je maar niet direct met de implementatie werkt. |
ja, ok.. boeie!
Maar hoe moet de functie GetObject eruit zien? Van welk type is x? Volgens mij wil ik iets heeeeeel moeilijks, terwijl ik nog een ver-beginner ben... :o Trouwens, Win2k gaat anders om met het geheugen dan Win98 :( Nu werkt mijn mooie string-class niet meer :( |
http://home.wanadoo.nl/tsd-mas/dump/parentchild.cpp.txt
Een voorbeelde child / parent class .. deze keer met data hiding :) |
leuk, maar wat nou als je in plaats van één class 'cKind', twee classes, 'cJongen' en 'cMeisje' hebt?
Dat bedoel ik. Hoe los je dat op? PS: Beide classes kunnen gebaseerd zijn op de class 'cKind' |
Citaat:
Je kunt bijvoorbeeld de eigenschap Geslacht toevoegen aan de klasse cKind. Dat is het eenvoudigste.. |
Citaat:
Je wilt me niet snappen hè? :mad: ;) Het gaat erom of het mogelijk is (en dat ik dan weet hoe het moet) |
Citaat:
Citaat:
Maar in principe zou je dan met een base klasse werken .. het nadeel is dat extra eigenschappen verloren gaan, tenzij je met pointers werkt .. en dat wordt dus afgeraden.. |
Alle tijden zijn GMT +1. Het is nu 13:05. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.