I created this .h file
#pragma once namespace Core { class IComparableObject { public: virtual int CompareTo(IComparableObject obj)=0;
From C++03, §10.4 3:
An abstract class shall not be used as a parameter type, as a function return type, or as the type of an explicit conversion. Pointers and references to an abstract class can be declared.
Passing obj as a const reference is allowed.
obj