#pragma once // only for demonstration #include class ICompareable { public: ICompareable() { std::cout << "ICompareable::ICompareable()" << std::endl; } // constructor, only for demonstration virtual ~ICompareable() { std::cout << "ICompareable::~ICompareable()" << std::endl; } // destructor virtual bool Compare(const ICompareable* pOther) = 0; // pure virtual - abstract method };