2017-04-20 7 views
4

仮想メソッドのシグネチャを変更すると、それはかなり頻繁に起こり、継承するクラスは抽象クラスになります。これにより、明らかに完全に無関係(元の変更)の場所に(紛らわしいほど大きな)エラーメッセージが表示される可能性があります。これらのメッセージのどこかで、私は「Foo is abstract」と読む。しかし、これらのエラーメッセージを解析するのは面倒です。クラスがではないことを強制する方法はありますか? abstract?クラスが抽象クラスでないことを確認してください

+0

デザインの変更は、しばしば大きな波紋を作ります。この種の問題を避けるために、インターフェイスを早期に安定させてください。 –

答えて

8

override specifierを使用すると、派生クラスのメソッドが基本クラスの抽象メソッドをオーバーライドするように指定できます。ベースクラスのメソッドのシグネチャを変更すると、指定されたメソッドoverrideは、もはやベースクラスのメソッドをオーバーライドしないため、コンパイラエラーが発生します。

+0

キーワード 'override'はC++ 11以降であるため、暗黙的でない場合はコンパイラで有効にする必要があります。 – Radek

+0

問題はありません。私はクラスのプロパティに固執しました。メソッドのプロパティである可能性があることは、私には決して起こりませんでした。 – choeger

関連する問題