Best way to storage and use data for objects?

Just to jump in here, I’m pretty new to C++ and Unreal too but have discovered and been using data tables myself. Is there any advantage to using Structs rather than classes for something like this? In my case I’m making weapons instead of characters, but it’s the same principle. Let me explain what I’m thinking and you can let me know if I’m over-complicating things. I do think that this would be relevant to the OP because we’re trying to accomplish essentially the same thing.

Right now I’m using a data table to set values in the class (things like muzzle velocity, damage done, etc.) via an FDataTableRowHandle variable. If I intend to have similar classes (like VehicleWeapons) that use this same data but otherwise might function slightly differently, should I instead make this data a UStruct which I then add as a variable to each of these broader classes? Or maybe make an actor component that holds these values instead, and set its member variables using the data table?

I don’t know if any of these are “good” options, but I’d be interested in people’s thoughts. While I love the freedom of “Do what gets the job done!” I’m not always sure if I’m really doing things efficiently.