鉴于:
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
contains Method1()
;
但是,由于返回类型,这似乎是一个坏主意 -Method1()
在调用更复杂之前在第一个继承级别访问更简单时Method3()
,并且必须将此调用保持在单行中。
b->Method1()->Method2()->Method(3); // will not work?
另外,有人告诉我,将其中一个放入try.. catch.. throw
其中Method's
偶尔会退出链,而不会以错误的值调用 next 方法。这是真的?
那么如何在 C++ 中正确实现方法链呢?