How can I have non UObject classes?

I want to make a class that is completely in c++.

class FDynamicTimeWarping
{
   ...
}

I put this class inside it’s own file DynamicTimeWarping.h and DynamicTimeWarping.cpp during the compile I get this “error LNK2019: unresolved external symbol”.

If I put this class inside .h file of UObject class that uses this, it will compile.

Is there anyway to put this class in its own .h file to prevent things getting messy?

Looks like you need forward declaration in .h file of UObject class that uses your class.
It looks like this:
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

// Some include goes here

class FDynamicTimeWarping;

...

And then you also need to put an include for DynamicTimeWarping.h in your UObject class .cpp file