I'm quite sure I'm not creating a pure 'Object' variable. I am declaring a vector consisting of Objects though, but I believe that should be legal even though 'Object' it is a abstract class/struct?
Header file:
#pragma once
#include <glm/glm.hpp>
#include "Collider.h"
#include "Renderer.h"
struct Object
{
public:
    float mass = 10;
    float Resititution = 0.7;
    glm::vec2 velocity;
    glm::vec2 force = glm::vec2(0, 0);
    bool isDynamic = true;
    bool isKinematic = true;
    
    Collider* collider;
    Transform* transform;
    virtual void submitToRenderer(Renderer* renderer) const = 0;
};
struct SphereObj : Object
{
    void submitToRenderer(Renderer* renderer) const override;
};
struct PlaneObj : Object
{
    void submitToRenderer(Renderer* renderer) const override;
};
cpp file:
#include "Object.h"
void SphereObj::submitToRenderer(Renderer* renderer) const
{
    renderer->submitObject(this);
}
void PlaneObj::submitToRenderer(Renderer* renderer) const
{
    renderer->submitObject(this);
}
in main()
std::vector<Object> objList; 
in another file:
std::vector<Object*> m_objects;
 
    