Avatar billede jpeace Nybegynder
03. marts 2001 - 19:03 Der 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.
Avatar billede erikjacobsen Ekspert
03. marts 2001 - 19:25 #1
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.
Avatar billede jpeace Nybegynder
03. marts 2001 - 20:27 #2
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???).
Avatar billede erikjacobsen Ekspert
03. marts 2001 - 21:56 #3
Jeg er lidt rusten på området, desværre ... :(
Avatar billede preclean Nybegynder
04. marts 2001 - 21:42 #4
brug pointer.
i din klasse opretter du en pointer til et array
string * symboltabel;
char * symbolTypeTabel;

funktionen bliver så.
bool Grammatik::grammatikTjek(string *symbolTabel, char* symbolTypeTabel)
{
symbol = symbolTabel;
symbolType = symbolTypeTabel;
...
}

i main opretter du så
string * symbolTabel= new string[xx];

det er ikke helt grammisk korrer men det skulle virke i teroien.
Avatar billede johnnyk Nybegynder
05. marts 2001 - 12:27 #5
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
Avatar billede johnnyk Nybegynder
05. marts 2001 - 13:12 #6
NB: ... det er selvfølgelig ikke nødvendigt, hvis du allerede har erklæret symbol+symboltype som arrays.
Avatar billede tuxen Nybegynder
06. marts 2001 - 14:44 #7
Som preclean siger:

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
Avatar billede jpeace Nybegynder
06. marts 2001 - 15:38 #8
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.
Avatar billede tuxen Nybegynder
06. marts 2001 - 15:46 #9
:)
Avatar billede preclean Nybegynder
06. marts 2001 - 15:53 #10
:)
/preclean
Avatar billede jpeace Nybegynder
06. marts 2001 - 18:20 #11
Jeg deler points\'ne mellem jer. Desværre kan jeg ikke give nogen til erikjacobsen.
Jeg har brugt lidt af hvert.
:)
Avatar billede johnnyk Nybegynder
06. marts 2001 - 20:34 #12
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
Avatar billede jpeace Nybegynder
07. marts 2001 - 18:00 #13
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.

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