well this "trick" is totaly unsafe and shouldn't be used....2 different versions of the same compiler (or 2 different compilers for the same language ) "might" handle virtual method calls differently (VMT slot at a different offset)...if you want such behaviour, use interfaces instead - they will work the way expected on all compilers in the same manner (not taking into account calling convention or compiler/language-specific types)...