[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

C++ hægtet liste af objekter med funktioner



Hej

Nu har det drillet mig længe nok.

Jeg har defineret et base objekt kaldet Cbase som ikke kan noget, og
fra det har jeg nedarvet to nye objekter, som her er kaldt Ca og Cb.

De virker fint nok således:
	Ca a;
	Cb b;
	a.test();
	b.test();

Nu er det lidt bøvlet at jeg skal kalde dem begge alle steder i koden, 
og der kunne meget nemt komme flere obejkter til som også skal kaldes.
Jeg tænkte om ikke en hægtet liste ville være løsningen.
Noget i retning af:
	Clink link;
	// og så tilføjer jeg nogle objekter
	link.add(new Ca());
	link.add(new Cb());

Så vil jeg gerne have kaldt begge objekter nu:
	link.test();
men det lader til at det er Cbase som jeg kalder, og ikke Ca og Cb 
som jeg havde håbet på.

add-funktionen er defineret som:
 void Clink::add(Cbase *newnode) {

Det første objekt burde kunne kaldes ved:
	link.head->obj->test();
hvilket jeg må have misforstået, for det er Cbase.test() der
bliver kaldt.

Alle objekter skulle kunne kaldes med
	Cbase *temp = head;
	while (temp) {
		temp->obj->test();
		temp = obj->next;
	}
eller noget i den retning.

Det må kunne implementeres meget elegant. Kender du et godt eksempel 
på det? De eksempler jeg har fundet viser bare nogle data i en hægtet 
liste, men jeg har jo objekter i min liste.

For nemheds skyld har jeg lille eksempel der ikke virker:
http://www.sslug.dk/~chlor/cpp/linked.cpp.txt
Måske er det bare en lille ting jeg misforstår.

/hans
-- 
Hamletsgade 4 - 201, DK-2200 København N, Phone: +45 3582 9079
Schou Industries ApS      http://schou.dk/    CVR: 26 13 44 39
--------------------------------------------------------------
If creativity is the field, copyright is the fence.
					-- John Oswald


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:09 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *