我正在设计一个分布式算法,我将功能分离如下:
class Peer {
public:
void send(PeerId destination, ...) //send some data
}
class MyDistributedAlgorithm {
public:
MyDistributedAlgorithm(Peer& self);
doX(); //calls self.send()
}
以这种方式分离出来的价值是我可以将算法重用于 Peer 的不同实现(tcp/ip 套接字或线程等)
我意识到的一件事是 PeerId 可能取决于 Peer 的实现,但 MyDistributedAlgorithm 需要存储一个带有 PeerId 类型键的映射,因此它必须是一个具体类型。
我在 C++ 中相当缺乏经验,在 C 中,我对这个问题的解决方案是将 PeerId 定义为 void* 并将其转换为每个 Peer 实现所必需的。在 C++ 中有没有更好的方法来做到这一点?