与えられた:
class Foo {
public:
void Method1();
}
class Bar extends Foo {
public:
Bar* Method2();
}
class Baz extends Bar {
public:
Baz* Method3();
}
それで、
someObject *b = new Baz();
b->Method3()->Method2()->Method1();
これはBaz()、、を含むすべてのメソッドが含まれているためMethod2()、機能しBarますMethod1()。
しかし、戻り型のため、これは悪い考えのようです-より複雑なを呼び出す前に最初の継承レベルでより単純にアクセスし、Method1()この呼び出しを1行に保持する必要がある場合。Method3()
b->Method1()->Method2()->Method(3); // will not work?
また、誰かが私にtry.. catch.. throw、それらの1つに入れるMethod'sと、間違った値でnextメソッドを呼び出さずにチェーンを終了することがあると言いました。これは本当ですか?
では、C++でメソッドチェーンを適切に実装するにはどうすればよいでしょうか。