C++での継承について少し助けが必要です。私はこのような同じ構造のコードを持っています:C++でのインターフェイスの実装
class IBase {
public:
virtual long Dimensions() = 0;
};
class IShape : public IBase {
virtual long Area() = 0;
};
class Rectangle : public IShape {
private:
long x;
public:
long Dimensions() {return x};
long Area() {return x*x};
};
class Rhombus: public IShape {
private:
long x;
long fi;
public:
long Dimensions() {return x};
long Area() {return x*x*sin(fi)};
};
ご覧のとおり、Dimensions()の実装は両方のクラスで同じです。今、私はこのような何かをするためにwan't:
class BaseImplementation : public IBase {
protected:
long x;
public:
virtual long Dimensions() {return x};
};
class Rectangle : public IShape, public BaseImplementation {
public:
long Area() {return x*x};
};
class Rhombus: public IShape, public BaseImplementation {
private:
long fi;
public:
long Area() {return x*x*sin(fi)};
};
がBaseImplementationからクラスロンバスへのメソッドの寸法()の実装を挿入することは可能ですか?これは、C++標準のいくつかのバージョンでサポートされていますか? Thx。
@CharlesBをそれはインターフェイスの継承を分離し、(デフォルトの実装)インを混合するために、一般的には悪い考えではありません。これはかなり一般的なテクニックです。 –
@ user1173308「メソッドの実装をクラスに挿入する」とは、どういう意味ですか? 'Rhombus'クラスの' Dimensions() 'の動作をオーバーライドしますか? – CharlesB
@ KonradRudolph:ありがとう、私はこれに慣れていない。間違っていたとしてコメントを削除しました。 – CharlesB