Kezdőoldal » Számítástechnika » Programozás » Miért nem működik a C++ kódom...

Miért nem működik a C++ kódom és hogyan kellene ezt helyesen megcsinálni?

Figyelt kérdés

[link]


template<typename FUNCTION1, typename FUNCTION2>

auto Combine(FUNCTION1 function1, FUNCTION2 function2)

{

return [&](auto const& p)

{

auto result1 = function1(p);

auto result2 = function2(result1);

return result2;

};

};


double X2(double d)

{

return d * 2;

}


int main()

{

auto c = Combine(X2, X2);


auto d = c(1.0);


return 0;

}


2018. júl. 18. 23:38
 1/7 A kérdező kommentje:
Rájöttem közben a capture mezőbe véletlenül &-et írtam = helyett.
2018. júl. 18. 23:41
 2/7 anonim ***** válasza:
Vagy akár el is hagyhatod
2018. júl. 19. 16:42
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

Ha esetleg kettőnél több függvényt szeretnél:


[link]

2018. júl. 19. 20:16
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:

"Ha esetleg kettőnél több függvényt szeretnél:"


Csináltam korábban hasonlót, de a te megoldásod szebb. Köszi, ebből lehet tanulni.

2018. júl. 20. 00:52
 5/7 A kérdező kommentje:

Amúgy miért ez a sorrend a kompozíciónál, amit írtál? Több helyen is láttam hogy ez a szokás ahogy te csináltad.

Mármint a kompozíció ezt szokta megvalósítani:

fn1(fn2(fn3(arg)))

és nem pedig ezt:

fn3(fn2(fn1(arg)))

... nekem az tűnt kézenfekvőnek, hogy az első függvény kapja a paramétert és a visszatérő értékével hívódik meg a második függvény, mert úgy lenne ha hagyományos módon és nem kompozícióval valósítanám meg. Szóval honnan ered ez a szokás?

2018. júl. 20. 01:09
 6/7 A kérdező kommentje:
Másrészt nemtudom, hogy ez a variadikus megoldás nem e jelentene problémát debuggolásnál. Nem lehet bele breakelni úgy hogy lássam a helyi változókat, meg hogy mi mivel tért vissza.
2018. júl. 20. 01:12
 7/7 anonim ***** válasza:

"Amúgy miért ez a sorrend a kompozíciónál, amit írtál?"


Matematikában is úgy szokás: [link]


Valamint az f(g(x)) nem minden esetben azonos g(f(x))-el. Pl f(x) = x*x, g(x) = 2*x


f(g(x)) = (2x)*(2x) = 4*x*x

g(f(x)) = 2*(x*x) = 2*x*x


"Másrészt nemtudom, hogy ez a variadikus megoldás nem e jelentene problémát debuggolásnál. Nem lehet bele breakelni úgy hogy lássam a helyi változókat, meg hogy mi mivel tért vissza."


Próbáld úgy, hogy a breaket az összetett függvény hívásához rakod és utasításonként lépkedsz. De tekintve, hogy rekurzív is meg fogja nehezíteni a debugolást, de rövid egyszerű függvényeknél könnyen észrevehetőek még a hibák.

2018. júl. 20. 16:16
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!