面向对象编程问题:全局对象

2 c++ oop

我可能有一个非常简单的问题,但我还没有找到合适的设计决定.基本上,我有4个不同的类,每个类有10个以上的方法.

这些类中的每一个都应该使用相同的TCP Socket; 此对象在程序执行期间保持套接字对服务器开放.我的想法是将TCP obejct声明为"全局",以便所有其他类可以使用它:

classTCP TCPSocket;

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

class classB  
{  
    private:   
    public:   
    classB();  
    ...   
};    
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我这样声明时,我的C++编译器给出了一条错误消息,即一些初始化数据写在可执行文件中(???).所以我想知道是否有任何其他方式我可以声明这个TCP对象,以便它可用于所有其他类及其方法?

非常感谢!

Mic*_*ers 9

我建议你将实例保存在初始化代码中,并将其传递给需要它的每个类.这样,替换模拟实现进行测试要容易得多.