C++ 如何在C++;为了在它们之间传输数据? 问题
假设我有一个类,我想以某种方式连接它的对象:C++ 如何在C++;为了在它们之间传输数据? 问题,c++,class,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
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
}
};
我想在具有以下要求的对象之间创建连接。创建连接后:
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;
}
};
类连接;
类对象
{
受保护的:
int-myValue;
//存储所有连接
向量连接;
公众:
对象():myValue(0){}
添加连接(连接c){connections.push_back(c);}
};
类连接
{
受保护的:
常量对象*in;
常量对象*out;
公众:
连接():输入(0),输出(0){}
void Init(常量对象*i,常量对象*o){
in=i;
out=o;
}
};
在上面的示例中,两个对象都必须将它们之间的连接存储在它们的connections
变量中。我知道这看起来很矛盾:两个对象都应该知道它们是连接的,但不应该存储这种连接。也许这不是不可能,我不知道
问题
我不要要求为我写完整的代码。让我知道我可以用什么概念
我知道上面对这个问题的描述不是很清楚,所以我将非常感谢类似问题、文章等的链接,或者一些关于如何编辑这个问题的建议,以使问题更清楚。解决这个问题有许多众所周知的模式。例如,“面向模式的软件体系结构,第2卷”中描述的接受器连接器模式像某种双向的观察者模式吗?我不认为我理解什么是观察者模式,但我怀疑在这种情况下,对象不知道它们是连接的。这听起来像是
std::shared_ptr
和std::weak_ptr
的用法。请注意,应使用std::shared_ptr
来管理共享所有权。如果没有这样或那样的所有权关系,那么两者都不应该有std::shared_ptr
,但是对于他们来说,如果真正的所有者有std::shared_ptr
,他们应该有一个std::weak_ptr
。你可以看看一些PubSub实现的想法。你到底是什么意思“传输数据”或“某些发送机制”?对象如何接收数据?它是否也有ReceiveValue()
方法?