私はその属性の1つに応じて何かをする関数を提供するクラスを設計しようとしています。私は同じプロセスをやりたいのですが、別の値で、これが派生クラスを作成して属性を変更した理由です。C++ getterを使用しないでconstメンバーを継承する
まず、値は各オブジェクトに依存せずクラス自体に依存するため、私は静的属性を作成しました。あるいは、私は静的属性を継承して各クラスの属性を変更することはできません。
次に、継承を使用できるようにconstで自分の属性を配置することにしました。私はあなたに私の問題を示す簡単なプログラムを作った。ここでは、fooが親メソッドの値ではなくメソッドを呼び出すオブジェクトの値を表示するようにしたいと思います。また、私は自分のメソッドで何度も変数を使うことになるので、ゲッターを使いたくない。これは画像処理のためだ。
#include <iostream>
// Compile it with
// g++ -o child_test child_test.cpp -std=c++11
class Parent{
public:
Parent() {}
virtual void foo(){
printf("%d\n", this->bar);
}
private:
const int bar = 0;
};
class Child : public Parent{
public:
Child() : Parent() {}
private:
const int bar = 10;
};
int main(){
Parent * p = new Parent();
p->foo(); // Output : 0
Child * c = new Child();
c->foo(); // Output : 0 ? How could it be 10
Parent * cp;
cp = new Child();
cp->foo(); // Output : 0 ? How could it be 10
}
私はコンストラクタでインスタンス化する必要がありますか?それ以外の場合は、連絡が行われません。これは静的変数で可能ですか? –