Does Thrust properly handle OOP?

Let’s say I have a base Light class and some child classes that extend from it, such as DirectionalLight and PointLight. If I create a device vector of lights and add some directional and point lights to the vector, will Thrust allocate the proper memory for each light? If so, how can I pass this information to a kernel? If not, how would I be able to accomplish this?