Kirjoittaja Aihe: c++ funktion määritteleminen lähellä käyttöpaikkaa vrt. lambda  (Luettu 3477 kertaa)

teele

  • Käyttäjä
  • Viestejä: 851
    • Profiili

Haluaisin määritellä ja laittaa funktioita std::vectoriin niin, että ohjelmatekstissä funktio näkyisi aika lähellä sitä paikkaa, jossa se lisätään vectoriin. Main-ohjelmassa ei näköjään voi määritellä funktioita, mutta lambdoja voi, koodi alla.

Koodia: [Valitse]

#include <stdlib.h> /* mm. atof  */
#include<iostream>


int main(int argc , char *argv[] )
{
 
  auto a = [](double a, double b, double c) { return a*b*c; };
  std::cout << "lambdakokeilu " << a(1, 2, 3) << std::endl;

  //auto koef(double a, double b, double c) { return a*b*c; }
  //std::cout << "koefunktion kokeilu " << koef(1, 2, 3) << std::endl;

  return 1;
}


// g++ koe01.cpp -Wall -pedantic  -std=c++11 -o koe01
//  cd Documents/my_c++/k-kansio



Tavalliset funktiomäärittelyt olisivat kuitenkin selkeämmän näköisiä, vaikka se ehkä onkin makuasia.

Olisiko jotain helppoa keinoa määritellä funktioita niissä kohdissa, joissa niitä laitetaan esimerkiksi vectoriin niin, että ei tarvitsisi käyttää lambdoja.


nm

  • Käyttäjä
  • Viestejä: 16426
    • Profiili
Olisiko jotain helppoa keinoa määritellä funktioita niissä kohdissa, joissa niitä laitetaan esimerkiksi vectoriin niin, että ei tarvitsisi käyttää lambdoja.

Voit käyttää lokaalisti määriteltyä luokkaa, jossa funktio on sulkuoperaattorina: https://stackoverflow.com/questions/4324763/can-we-have-functions-inside-functions/4325449#4325449

Lambdasyntaksi on kyllä paljon siistimpi tässä.