仮想の克服 <<オペレータ エラー
仮想 << を定義しようとしたとき演算子を無料関数として使用すると、開発者はコンパイラ エラー「演算子 <<: メンバー関数とベースのみを仮想にすることができます。」が発生する可能性があります。このエラーは、自由関数を仮想化できないために発生します。
この問題を解決するには、クラス内に新しい仮想メンバー関数を導入して中間層を追加することを検討してください。
<code class="cpp">class MyClass { public: virtual void print(ostream& where) const; };</code>
この仮想関数は、次の機能を提供します。サブクラスの出力動作をカスタマイズする手段です。
次に、演算子<<を定義します。正しいパラメータ順序を持つ自由関数として:
<code class="cpp">ostream& operator<< (ostream& out, const MyClass& mc) { mc.print(out); return out; }</code>
このアプローチにより、演算子<<が確実に実行されます。サブクラスで仮想動作を定義できるようにしながら、必要なパラメーターの順序を持ちます。
以上が仮想`を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。