Avatar billede tax Nybegynder
11. oktober 2001 - 10:50 Der er 27 kommentarer og
1 løsning

Lister i VC++?

Jeg skal bruge en generel liste der kan holde styr på nogle objekter.

Listen vil jeg opbygge som en klassisk hægtet-liste, hvor hvert link indeholder reference til næste link og en slags pointer. Denne pointer havde jeg forestillet mig i første omgang at være af typen int*.

Når listen anvendes skal den kun indeholde en type objekter, det vil sige at jeg altid kender typen af objektet jeg får returneret en pointer til.

Spørgsmålet er så om det vil fungere at anvende denne liste til at holde styr på pointere til andre typer objekter, hvis jeg selv holder styr på hvor der skal castes?

Det vil sige at jeg bygger en generel liste der hlder styr på pointere til int, og anvender disse int-pointere til at refere til objekter af en anden type.

Jeg arbejder i VC++ som har nogle problemer med at anvende templates. Derfor forsøger jeg denne workaround.

Alle forslag og kommentarer er velkomne. 

/TAX
Avatar billede jpk Nybegynder
11. oktober 2001 - 10:54 #1
Hvorfor bruger du ikke stl class list?
Avatar billede tax Nybegynder
11. oktober 2001 - 10:55 #2
Fortæl???? Hvor findes den
Avatar billede tax Nybegynder
11. oktober 2001 - 10:57 #3
Standard Template Libraries funger skidt under vc++. Rodede med det hele dagen igår.
Avatar billede jpk Nybegynder
11. oktober 2001 - 10:59 #4
Det er en standard del af C++...

I filen hvor du bruger den skriver du:

#include <list> // ikke list.h!!!
using std::list; // så kan du bruge class list uden at angive std:: foran hver gang

Avatar billede tax Nybegynder
11. oktober 2001 - 11:01 #5
Dt ser cool ud. sidder netop og læser på det.

:)))
Avatar billede jpk Nybegynder
11. oktober 2001 - 11:01 #6
hvad!!! STL fungerer upåklageligt under VC++...
Avatar billede tax Nybegynder
11. oktober 2001 - 11:03 #7
Jeg prøvede at definere egne templates. Det funkede bare ikke og så læste jeg på en eller anden inetside at vc++ havde problemer med templates...
Avatar billede jpk Nybegynder
11. oktober 2001 - 11:07 #8
Hmm, det har jeg aldring haft problemer med!
STL\'s list, vector osv er iøvrigt templates...
Avatar billede tax Nybegynder
11. oktober 2001 - 11:10 #9
OK..

jeg er lige ved at kaste et eksempel sammen med en liste af strenge. Jeg får et problem når jeg vil have en streng fra listen ind i en messagebox. Jeg kan ikke caste den.. Skal man gøre noget specielt?
Avatar billede jpk Nybegynder
11. oktober 2001 - 11:12 #10
prøv strengnavn.c_str()
Avatar billede tax Nybegynder
11. oktober 2001 - 11:15 #11
jpk:

Du ved tilfældigvis ikke hvordan man binder cout til vc++ vinduet i bunden af skærmen.
Avatar billede tax Nybegynder
11. oktober 2001 - 11:17 #12
Hvis jeg skal caste til et andet objekt end en streng hvad anvender jeg så istedet for c_str()???
Avatar billede jpk Nybegynder
11. oktober 2001 - 11:20 #13
Hvis du vil skrive ud til debug winduet, skal du bruge TRACE(\"Skriv\"); (fungerer ligesom sprintf og CString\'s Format, så du kan let skrive \'ikke-streng\' værdier ud!

Caste til et andet object??? Fra hvad til hvad!
Avatar billede jpk Nybegynder
11. oktober 2001 - 11:22 #14
Hvis du vil have din liste til at indeholde pointere til objekter, gør du bare således:

list<ClassName*> TheList;
Avatar billede tax Nybegynder
11. oktober 2001 - 11:45 #15
jpk:

Er lige kommet tilbage fra frokost.. Tusind tak for hjælpen..
Avatar billede tax Nybegynder
11. oktober 2001 - 11:50 #16
Hvad inkluderer man for at anvende trace? windows.h er ikke nok?
Avatar billede jpk Nybegynder
11. oktober 2001 - 11:56 #17
Du bruger MFC ikke?
Det skal stå med kapitæler TRACE
Avatar billede tax Nybegynder
11. oktober 2001 - 12:00 #18
Joda, men det funker bare ikke. Den svarer unknown identifyer. TRACE
Avatar billede jpk Nybegynder
11. oktober 2001 - 12:08 #19
TRACE virker naturligvis kun i Debug mode og IKKE release!
Avatar billede jpk Nybegynder
11. oktober 2001 - 12:08 #20
Hvad skriver du præcist!
Avatar billede tax Nybegynder
11. oktober 2001 - 12:09 #21
Det ved jeg, men problemet er ikke at der ikke udskrives. Problemet er at den melder unknown identifier..

I release ignoreres den blot.
Avatar billede tax Nybegynder
11. oktober 2001 - 12:09 #22
TRACE(\"TEST\")
Avatar billede jpk Nybegynder
11. oktober 2001 - 12:15 #23
Nu ved jeg selvfølgelig ikke om det var fordi du ikke skrev det PRÆCIST, men der skal selvfølgelig \';\' bagefter...

Avatar billede billeschou Nybegynder
11. oktober 2001 - 12:58 #24
using std::list kan med fordel erstattes med using namespace std
Avatar billede tax Nybegynder
11. oktober 2001 - 12:59 #25
Thanx.
Avatar billede jpk Nybegynder
11. oktober 2001 - 13:05 #26
=> billeschou
I nogle tilfælde, ja!
Dog ikke her hvor der kun anvendes denne klasse...
\"using namespace std\" kan give problemer hvis der anvendes andre namespaces, hvis navn også findes i std\'s namespace (fx ved brug af nogle MFC-klasser!!!)

Jeg har i øvrigt ladet mig fortælle at det kan forlænge kompileringstiden! (jeg har dog ikke lavet nogle tests herom...)
Avatar billede billeschou Nybegynder
11. oktober 2001 - 13:13 #27
det er selvfølgelig rigtigt, men hvis man laver større programmer hvor man f.eks. inddrager std::cout og std::cin osv.
Kan man slippe for at skrive det samme en masse gange må det være en fordel.
Det problem du nævner opstår vel kun hvis man benytter flere namespaces samtidig... noget der sker relativt sjældent tror jeg
Avatar billede jpk Nybegynder
11. oktober 2001 - 13:27 #28
Nu nævnte du selv \"større programmer\". Det er jo netop i \"store\" programmer sandsynligheden for at anvende flere namespaces er størst.

Den applikation jeg netop sidder og arbejder på anvender både std C++, MFC, STL, COM+ og CORBA. Hvis jeg ændrer mine using... til using namespace std, kan jeg ikke kompilere skidtet!
Jeg er naturligvis enig i, at det er irriterende at skrive alle disse \"using\" hele tiden, men en simpel måde at komme uden om det på, er at lave en header-fil, fx STLInc.h, og her skrive sine STL includes og using... Man kan så nøjes med at include denne fil der hvor man skal bruge klasserne!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester