Why SetSocket() is virtual function?
Closed this issue · 2 comments
tkomatsu commented
SetSocket()
は仮想関数ではなく、ClientとServerクラスそれぞれで定義する通常の関数で良いのでは?
使われ方を見ると、それぞれのクラスで宣言された変数で呼び出されています。
仮想関数を使う理由は親クラスであるSocketクラスのメソッドとして呼びたいが、処理を継承クラスで分けたいからだと思いますが、現状はそれぞれのインスタンスに対してメソッドを呼び出しているので仮想関数にする理由がわかりません。
通常の関数にすることでServerでは引数を取らなくて良くなるので、今無駄にvoidにキャストしてる処理もなくなりスッキリすると思います。
Serverにおける呼ばれ方
Lines 28 to 39 in a5c6080
Clientにおける呼ばれ方
Lines 41 to 56 in a5c6080
tkomatsu commented
リファクタリングしつつ直します。
tkomatsu commented
整理していくと、Socketクラスはやはりインターフェースとしても良いのでは?と思ってきました。
整理したものをプルリクに投げるので、コードを見て判断してください。