如何在C ++中连接两个对象以便在它们之间传输数据?

时间:2017-09-11 16:54:10

标签: c++ class

问题

假设我有一个类,我想以某种方式连接它的对象:

class Object
{
  protected:
    int myValue;

  public:
    Object() : myValue(0) {}

    void SendValue() { 
    //here is some sending mechanism
    //to send my value to *all* those objects 
    //which are connected to me
    }
};

我想在具有以下要求的对象之间创建连接。创建连接后:

  1. 两端"知道"现在他们已经连接了
  2. 应该可以使用此连接从一个实例向另一个实例发送一些数据

  3. 此连接不应存储多次。

  4. 最后一项要求是避免这样的事情:

    class Connection;
    
    class Object
    {
      protected:
        int myValue;
        //store all connections
        std::vector<Connection> connections;
    
      public:
        Object() : myValue(0) {}
        AddConnection( Connection c ) { connections.push_back(c); }
    };
    
    class Connection
    {
      protected:
        const Object* in;
        const Object* out;
    
      public:
        Connection() : in(0), out(0) {}
        void Init( const Object* i, const Object* o ) {
          in  = i;
          out = o; 
        }
    };
    

    在上面的例子中,两个对象必须在它们的connections变量中存储它们之间的连接。我知道这似乎是矛盾的:两个对象应该知道它们已连接但不应存储此连接。也许这不是不可能我不知道。

    问题

    要求为我编写整个代码。请告诉我可以使用的概念

    我知道上面对问题的描述不是很清楚所以我会很感激链接到类似的问题,文章等。或者一些建议如何编辑这个问题以便说清楚。

1 个答案:

答案 0 :(得分:-1)

有很多众所周知的模式可以解决这个问题。例如,“面向模式的软件架构,第2卷”中描述的 acceptor-connector 模式