私は分散アルゴリズムを設計しており、次のように機能を分離しました。
class Peer {
public:
void send(PeerId destination, ...) //send some data
}
class MyDistributedAlgorithm {
public:
MyDistributedAlgorithm(Peer& self);
doX(); //calls self.send()
}
このように分離することの価値は、ピアのさまざまな実装 (tcp/ip ソケット、またはスレッドなど) にアルゴリズムを再利用できることです。
PeerId は Peer の実装に依存する可能性がありますが、MyDistributedAlgorithm は PeerId 型のキーを持つマップを格納する必要があるため、具象型でなければなりません。
私は C++ にかなり慣れていません。C では、この問題に対する私の解決策は、PeerId を void* として定義し、各 Peer 実装で必要に応じてキャストすることです。C++ でこれを行うより良い方法はありますか?