Search code examples
c++objective-cprotocolsdelegation

C++ question: feature similar to Obj-C protocols?


I'm used to using Objective-C protocols in my code; they're incredible for a lot of things. However, in C++ I'm not sure how to accomplish the same thing. Here's an example:

  1. Table view, which has a function setDelegate(Protocol *delegate)
  2. Delegate of class Class, but implementing the protocol 'Protocol'
  3. Delegate of class Class2, also implementing 'Protocol'
  4. setDelegate(objOfClass) and setDelegate(objOfClass2) are both valid

In Obj-C this is simple enough, but I can't figure out how to do it in C++. Is it even possible?


Solution

  • Basically, instead of "Protocol" think "base class with pure virtual functions", sometimes called an interface in other languages.

    class Protocol
    {
    public:
        virtual void Foo() = 0;
    };
    
    class Class : public Protocol
    {
    public:
        void Foo() { }
    };
    
    class Class2 : public Protocol
    {
    public:
        void Foo() { }
    };
    
    class TableView
    {
    public:
        void setDelegate(Protocol* proto) { }
    };