03. marts 2001 - 19:03Der er
10 kommentarer og 3 løsninger
Parameteroverførsel af Array
Jeg har brug for at lave en parameter overførsel af et array, men har problemer med dette. Jeg kalder en funktion som ligger i en anden klasse.
Kalder således: Grammatik jma; if (jma.grammatikTjek(symbol, symbolType))
I grammatik klassen ser der således ud: bool Grammatik::grammatikTjek(string symbolTabel[], char symbolTypeTabel[]) { symbol = symbolTabel; symbolType = symbolTypeTabel[]; ... }
Og jeg får flg. fejlmeddelser: [C++ Error] grammatik.cpp(73): E2277 Lvalue required. [C++ Error] grammatik.cpp(74): E2188 Expression syntax.
(symbol = symbolTabel; symbolType = symbolTypeTabel[]; skal selvfølgelig være ens, men jeg ved ikke hvordan de skal være.)
Jeg har også tænkt på at det må være muligt at overfører dem med objektet til constructoren, men har ikke ret meget erfaring med dette.
Du skal oprette et array af passende størrelse i objektet (du skal formentlig have størrelsen med som parameter på dine 2 arrays). Og så skal du kopiere elementerne, 1 for 1, for begge.
Tak. Ønsker dog lidt uddybning: hvordan opretter man et array (eller bare noget) i et objekt? Og hvornår skal jeg kopiere elementerne (i arrayet). (Det burde da heller ikke være nødvendigt???).
Hej! Jeg kender kun lidt til C, men så vidt jeg kan se er der en mulighed for at du ikke har erklæret dine variable (symbol+symboltype) som pointer-variable!? I C udgør array-navnene alene statiske pointere, så det går jeg udfra også er tilfældet i C++!? /Johnny
funktionen bliver så. bool Grammatik::grammatikTjek(string *symbolTabel, char* symbolTypeTabel) { symbol = symbolTabel; symbolType = symbolTypeTabel; ... }
og du kalder den bare som du plejer, ved at putte dine arrays ind som params:
grammatikTjek(symbol, symbolType); da array´s navne egentlig er en adresse i sig selv som johnnyk skriver, og det gælder også c++.
SÅ har du i din funk. en pointer til det ene arry og en pointer til det andet. For herfra at gøre det hele lidt nemmere for dig selv kan du omskrive din funktion til også at medsende størrelsen af de 2 arrays. Så kan du nemmere finde ud af hvornår du skal stoppe med at kigge i din RAM, så du undgår for mange \"access violations\" :) Thue
Tak for svarene. Jeg har fået det til at virke. Vender lige tilbage med points. Problemet lige nu er at jeg kun kan give points til de sidste 2 indlæg.
Ok, sorry - jeg blev vist lidt for ivrig der, men det er ikke så længe siden jeg blev færdig med afsnittet om pointere :) Skal nok holde lav profil her!!! /Johnny
Det er såmænd helt fint!!! Jeg har desværre ret travlt for tiden så jeg ikke tid til at sætte mig ind i nyt hele tiden.
Synes godt om
Ny brugerNybegynder
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.