Just to clarify, isKindOf() is a method of AcRxObject, while isDerivedFrom() is a method of AcRxClass. So the method you want to call depends on whether you're pointing to the entity or to its class object. If ent points to an AcDbEntity and id is its AcDbObjectId, then you can check for it being a dimension in these ways:
ent->isKindOf(AcDbDimension::desc())
// or:
ent->isA()->isDerivedFrom(AcDbDimension::desc())
// or:
id.objectClass()->isDerivedFrom(AcDbDimension::desc())
And to make it more confusing, AcRxClass itself is derived from AcRxObject, so it's possible, although usually incorrect and unintended, to do this:
id.objectClass()->isKindOf(AcDbDimension::desc())
That will always return false because objectClass() returns a pointer to an AcRxClass object, and AcRxClass itself is not derived from AcDbDimension. It derives directly from AcRxObject.