C++ template usage – Code Review Stack Exchange

I am reviewing code like this in our company product:

template <typename T>
void drawLineBetweenPoints(const SVector3 &pos1, 
                           const SVector3 &controlPt1,
                           const SVector3 &controlPt2, 
                           const SVector3 &pos2,
                           T *object)
{
  double sFactor = object->stretchFactor();
  ...
}

I am arguing with a developer where he is saying this is acceptable in C++ where I am arguing that T needs to be a virtual class or an abstract virtual class so it’s easier for a developer to understand what type of object this function accepts. Otherwise you have to read the function implementation and from that understand the interface.
am I wrong?