Really nice work, I really appreciate the effort you've done thus far, there's still more to do.
This will be a small file with some minor things you can do to refine your code further:
When it comes to large projects, it can be very confusing when you have a varying amount of classes per header/source file.
Our rule is to always have one pair of header/source for

This class should have it's implementation in it's own file
One fundamental aspect in C++ is preference for returning objects, rather than outputting them as params, while it can be a performance hit in some aspects, the improvement in readability is worth it, for example, prefer to return an std::string rather than output by reference.
Really nice work, I really appreciate the effort you've done thus far, there's still more to do.
This will be a small file with some minor things you can do to refine your code further:
When it comes to large projects, it can be very confusing when you have a varying amount of classes per header/source file.

Our rule is to always have one pair of header/source for
This class should have it's implementation in it's own file
One fundamental aspect in C++ is preference for returning objects, rather than outputting them as params, while it can be a performance hit in some aspects, the improvement in readability is worth it, for example, prefer to return an
std::stringrather than output by reference.