/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
adgang til anden class fra class
Fra : glenn007
Vist : 646 gange
50 point
Dato : 13-04-03 22:55

Jeg har brug for at hente en variablen fra en anden class
ind i denne timer

void CSerialDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
Her vil jeg hente "rx" indværdien ligger i en anden klasse som hedder

"BOOL CSerialCom::ReadByte(BYTE   &resp)"



};


hvordan er dette muligt



 
 
Kommentar
Fra : Random


Dato : 13-04-03 23:41

Så skal der er være en get-funktion for rx værdien i CSerialCom klassen, eller rx værdien skal være defineret som public.
Ellers er det vel ikke muligt...

Kommentar
Fra : glenn007


Dato : 13-04-03 23:52

ja den skal defineres som public, men hvorledes hedder kaldet til rx som ligger i CSerialCom

Kommentar
Fra : Random


Dato : 14-04-03 00:16

Et object af klassen må være oprettet et sted som f.eks: CSerialCom cCom;
Hvis det er et globalt object, er det vel bare noget med: cCom.rx;




Accepteret svar
Fra : pmbruun

Modtaget 50 point
Dato : 14-04-03 08:41

Der er noget galt her - du skriver, at rx ligger i en klasse som hedder:

"BOOL CSerialCom::ReadByte(BYTE &resp)"

Det er altså ikke nogen klasse, det er en metode (=funktion). Hvis rx kun er tilstede lokalt i metoden er det jo klart, at du ikke kan tilgå den. Som alternativ til det andet udmærkede forslag, kunne du så overveje at definere

void CSerialDlg::setRx(byte rx)

Det er ikke umuligt, at det bliver OK, men din beskrivelse af, hvad der foregår i dit program er for mangelfuld, til at jeg kan rådgive dig præcist.

Vent lige lidt... Er du sikker på, at det ikke er returparameteren resp, som er din rx byte?

Ok. Det ser ud til, at du er i gang med at læse en byte fra en seriel port. Den rå læserutine aner jo ikke, hvad den byte betyder, så din logik bør laves, så du så snart du har kaldt ReadByte gemmer din byte et sted, som siger noget om, hvad byten betyder. Altså noget i retning af:

byte theByte; // Måske skal dette være member på klassen?
BOOL res = cCom.ReadByte(theByte);

if (!res) {
// Jeg ved ikke lige, hvad det betyder. Måske fejl eller slut?
} else {
// Nu har theByte den læste værdi, og du kan gøre noget med den...

}

Men husk, at ReadByte nok kun kan læse samme byte een gang...

Peter

Kommentar
Fra : glenn007


Dato : 07-07-03 23:19

mange tak for hjælpen, det var lige hvad jeg skulle bruge for at fatte det

Godkendelse af svar
Fra : glenn007


Dato : 07-07-03 23:21

Tak for svaret pmbruun.
                        

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste