Search code examples
c++functionmaintainability

C++ Function List


I'm working on a fairly complex project, a custom encryption routine if you will (just for fun) and I've run into this issue in designing my code layout.

I have a number of functions that I want to be able to call by index. Specifically, I need to be able to call one randomly for the encrypt process, but then address that by a specific index in the decrypt process.

I was considering a classic function array, but my main concern is that a function array would be tricky to maintain, and a little ugly. (The goal is to get each function pair in a separate file, to reduce compile times and make the code easier to manage.) Does anyone have a more elegant C++ solution as an alternative to a function array? Speed isn't really an issue, I'm more worried about maintainability.

-Nicholas


Solution

  • You could write something like:

    class EncryptionFunction
    {
    public:
        virtual Foo Run(Bar input) = 0;
        virtual ~MyFunction() {}
    };
    
    class SomeSpecificEncryptionFunction : public EncryptionFunction
    {
        // override the Run function
    };
    
    // ...
    
    std::vector<EncryptionFunction*> functions;
    
    // ...
    
    functions[2]->Run(data);
    

    You could use operator() instead of Run as the function name, if you prefer.