Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] Problemen met functie en return

Pagina: 1
Acties:
  • 58 views sinds 30-01-2008

  • bart0l0meus
  • Registratie: Mei 2006
  • Laatst online: 04-11-2022
Hallo,
Ik ben bezig met een programma dat een decimale waarde (wat een kleur voorstelt) naar een microprocessor stuurt en aan de hand van pwm een rgb led aanstuurt.
Alleen lukt het niet met return, hij moet namelijk r1,g1 en b1, berekenen in de functie en hierna terugsturen naar de oude functie maar dit doet hij niet, iemand een idee waarom??

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int kleur1(TColor RGB1, int b1,int g1, int r1);

int kleur1(TColor RGB1, int b1,int g1, int r1)
{
  b1 = RGB1 >> 16;
  g1 = (RGB1 & 0x00FF00) >> 8;
  r1 = (RGB1 & 0x0000FF) >> 0;
  return(RGB1, b1, g1, r1);

};


void __fastcall TForm1::EditDec1Click(TObject *Sender)
{
  ColorDialog1->Execute();
  lblBox1->Color = ColorDialog1->Color;
  RGB1 = ColorDialog1->Color;
  kleur1(RGB1, b1, g1, r1);
  EditDec1->Text = IntToHex(RGB1,6);
  EditHex1->Text = IntToStr(Hex1);
  Editr1->Text = IntToStr(r1);
  Editg1->Text = IntToStr(g1);
  Editb1->Text = IntToStr(b1);
};

“If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail” (Abraham Maslow)


  • blackangel
  • Registratie: April 2002
  • Laatst online: 27-11 13:21
Je kan bij C/C++ maar 1 waarde terug sturen. De handigste oplossingen zijn pointers danwel references.

In het geval van pointers (is het het netste om) de variabelen declareren in de main, en het adres van de getallen meegeven aan de functie. In die functie heb je een verwijzing naar een adres, en op dat adres pas je de getallen aan.

In het geval van references zeg je dat de functie niet de variabelen zelf moet aanmaken, en de waardes kopieren wat bij jouw wel gebeurt :)

Een voorbeeld is dus:

C++: pointers.c
1
2
3
4
5
6
7
8
9
10
11
/* C/C++ */
void functie(int *a, int *b) {
  *a=1;
  *b=2;
}

void main() {
  int k, l;
  functie(&k, &l); /* &k om het adres van k op te vragen */
  /* have fun met k en l); */
}



C++: referencies.cpp
1
2
3
4
5
6
7
8
9
10
11
/* Alleen C++ */
void functie(int &a, int &b) {
  a=1;
  b=2;
}

void main() {
  int k, l;
  functie(k, l);
  //have fun met k en l);
}


Overigens is dit wel heel erg basic. Ik kan mij niet voorstellen dat je het met [google=return multiple values c++] niet gevonden hebt eerlijk gezegd :X

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Tja, als ik dit zo lees, en je vorige topic, is het dan niet handiger om gewoon eens te beginnen bij een goed C++ boek? Want nu doe je maar wat en je vraagt aan ons waarom het niet werkt. We zijn geen helpdesk ofzo :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Neem onze Programming Beleid Quickstart eens (goed) door. En lees dan meteen even het stukje over quickfixes. We zijn hier geen 'wij fixen uw code voor nop' forum; je mag zelf best wat meer inzet tonen. Dat is je in je vorige topic ook al duidelijk gemaakt.

[ Voor 14% gewijzigd door RobIII op 22-11-2007 20:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.