Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OO Programming Question: Global Object

Tags:

c++

oop

I have probably a quite simple problem but I did not find a proper design decision yet. Basically, I have 4 different classes and each of those classes has more than 10 methods.

Each of those classes should make use of the same TCP Socket; this object keeps a socket open to the server throughout program execution. My idea was to have the TCP obejct declared as "global" so that all other classes can use it:

classTCP TCPSocket;

class classA  
{  
    private:   
    public:   
    classA();  
    ...   
};    

class classB  
{  
    private:   
    public:   
    classB();  
    ...   
};    

Unfortunately, when declaring it like this my C++ compiler gives me an error message that some initialized data is written in the executable (???). So I am wondering if there is any other way I could declare this TCP object so that it is available for ALL the other classes and its methods?

Many thanks!


1 Answers

I'd suggest you keep the instance in your initialization code and pass it into each of the classes that needs it. That way, it's much easier to substitute a mock implementation for testing.

like image 80
Michael Myers Avatar answered Jul 02 '26 13:07

Michael Myers



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!