私の目的は、C ++の別のクラスから継承し、すべての親クラスメソッドを同じ方法でオーバーロードするクラスを作成することです。
したがって、メソッドが呼び出されると、いくつかのコードが実行され、元のメソッドが呼び出され、派生クラスのオーバーロードメソッドでもう少しコードが実行されます。
class Base
{
Base() {}
~Base() {}
void base_method()
{
// Does something.
}
}
template<class T>
class ClassWrapper : public T
{
public:
ClassWrapper(T base) : T( base ) {}
~ClassWrapper() {}
void wrap_function()
{
// multithread block {
// call base method within multithread block.
this->base_method();
// }
}
}
int main()
{
Base B;
ClassWrapper<Base> C( B );
C.base_method();
return 0;
}
理想的には、基本クラスについて何も知られていないでしょうが、そのすべてのメソッドをオーバーライドすることができます。
これが可能かどうかはわかりませんが、何か提案があれば素晴らしいです!
継承を使用すると、次のことができます。
class Base
{
Base() {}
virtual ~Base() {}
virtual void base_method()
{
// Does something.
}
};
class BaseWrapper : public Base
{
public:
BaseWrapper(Base base) : Bas( base ) {}
void base_method() override
{
// Some code ...
Base::base_method();
// Some code ...
}
}
int main()
{
Base B;
BaseWrapper C( B );
C.base_method();
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加