関数fooを持つクラスAがあるとします。
クラスAは、すべて関数fooを持つ少数のクラスの親です。
すべての子クラスは、 A::foo
の機能を必要とし、追加します。たとえば
:すべての子の特定の関数呼び出しでparent関数を呼び出すC++
class A
{
public:
void foo()
{
print('A');
}
};
class B:public A
{
public:
void foo()
{
print("B");
}
};
class C:public A
{
public:
void foo()
{
print("C");
}
};
void main()
{
B b;
C c;
c.foo()// now only goes to C::foo(), meaning print C. I want it to to also go into A::foo() meaning print AC
b.foo()//now only goes to B::foo(),meaning print B. want it to print AB
}
そして私がfoo関数でclass D : A
を追加したい場合、私は何かを明らかに不足していますならば、それはまたA::foo()
、その後D::foo()
申し訳ありませんを行います。
EDIT:自動的な方法があるかどうかは明らかではありませんでした。
EDIT:回避策を見つけました:今、2つの機能が存在することになりますので、
class A
{
virtual void foo2(){}
public:
void foo()
{
print('A');
foo2();
}
};
class B:public A
{
void foo2()
{
print("B");
}
public:
};
class C:public A
{
void foo2()
{
print("C");
}
public:
};
void main()
{
B b;
C c;
c.foo()// now prints AC
b.foo()//now prints AB
}
は冗長なようです。
'D :: fooボディ '{A :: foo(); ' – Peter
これを自動的に行う方法はありませんが、' foo'関数はそれぞれが必要であれば 'A :: foo()'を呼び出すことができます。 –
thx、それは私がちょうどそれを確かめたいと思ったものです。返信のための –