关于返回*this的成员函数
我定义了一个基类base和一个派生类derive,其中基类有几个成员函数(假设为a,b)返回*this,派生类也定义了几个成员函数(假设为c,d)。
现在我定义了一个派生类对象,先调用基类中定义的成员函数,返回*this,但是返回的这个是基类对象,不能调用派生类的成员函数,所以不能写成 derive.a().b().c(); 这种形式。
请问,如何修改程序,使derive.a().b().c()这种语句是合法的呢?
[解决办法]
class Base
{
public:
Base* a()
{
return this;
}
virtual ~Base()
{
}
};
class Derive : public Base
{
public:
void c()
{
std::cout << "Derive c" << std::endl;
}
};
int main(int argc, char *argv[])
{
Derive *d = new Derive();
dynamic_cast<Derive*>(d->a())->c();
system("pause");
}