Using Lambdas in C++: Listing 2

Function objects in C++.

// SaveFunction object as an interface.
// Interfaces in C++ are conceptual. It's not that they don't exist, but they are a special
// case of abstract classes whose methods are all pure virtual (declared as "=0" and
// therefore not defined.
class SaveFunction
{
public:
  virtual int operator()(Image image, string filepath) =0;
};

class SaveAsPNG : SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

class SaveAsGIF : SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

class SaveAsTIFF : SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

class SaveAsJPG : public SaveFunction
{
public:
  int operator()(Image image, string filepath)
  {
    ...
  }
};

// These two lines instance the JPG functor and invoke it.
SaveAsJPG saveFunction;
saveFunction(im, "my_image");

About the Author

Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected].

comments powered by Disqus

Featured

  • Low-Coding in the Age of AI: Dataverse Embraces Copilot, Claude and Cursor

    Microsoft is extending Dataverse into coding-agent marketplaces while expanding its MCP tools, certification program and governance controls.

  • Visual Studio Takes Aim at Copilot Billing Shock

    Beyond Copilot usage visibility, the June update delivers several other enhancements centered on AI-assisted development, security and quality-of-life improvements. Here's a quick rundown of the remaining additions announced by Microsoft.

  • Claude AI Gets Yet Another Boost in VS Code 1.128

    The July 8, 2026, Visual Studio Code update expands agent workflows, chat attachments, browser-tab controls, OS-level shortcuts and enterprise telemetry management.

  • TypeScript 7 Arrives to Rock VS Code with Go-Powered Speed

    Microsoft says TypeScript 7, announced July 8, brings native Go performance to VS Code, Visual Studio and other editors.

Subscribe on YouTube