@HappyCoder
Sorry for not giving you a specific, quick-to-use answer, but I have the impression your issue lies with design, not coding.

Now everything is much clearer. The code you started looked like an attempt to implement implicit sharing, so I advised in this direction. What you want to do is something different entirely.

Let's get at this step by step:

You want to access the same instance of the settings class from two objects. That means, if the settings change in one object, the other object can immediately access the new data. Correct?

I see basically two approaches:

If you have exactly one instance of Settings for your whole application, it might make sense to provide a global instance (singleton) for it. If your classes have to use different instances of Settings, you can use pointers or references within your classes. And before you consider smart pointers, let's think about using normal pointers or references.

Smart pointers do some magic for you, but as every good wizard will tell you, magic comes at a price. And I'm not only talking about performance here. In my view, smart pointers make the program more complex, because there are suddenly more factors that affect the lifetime of an object. When the destructor of a class is called can be important, because it may destruct other classes, call cleanup functions, even emit signals. Call a destructor at the wrong moment, and your program may crash.

When you manage the lifetime of your objects yourself, you can keep things simpler and clearer. Smart pointers are useful where this is either not possible, or not desired for some good reason. With the exception of implicit sharing, I rarely use smart pointers. I see them as a special tool that waits in the drawer for a special case where I need it.

(I admit this is a matter of philosophy, and I'm sure other developers will disagree)

Anyway, back to your code. Ask yourself these questions:

Who creates the settings, and who should destroy them? Do you have an object that manages both PlotManager and CurveManager? Would that be a good place to control the lifetime of your Settings class? If you don't have such an object: How will PlotManager and CurveManager ever know about each other? How can you create a PlotManager with a new Settings object, and when you create a CurveManager it already knows a Settings object exist and automatically uses it?