gpt4 book ai didi

c++ - 在不同的类继承级别调用一系列函数

转载 作者:太空狗 更新时间:2023-10-29 21:50:38 26 4
gpt4 key购买 nike

给定:

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();

但是,由于返回类型,这似乎是个坏主意 - 在调用更复杂的 Method3() 之前在第一个继承级别访问更简单的 Method1() 时,< em>和 必须将此调用保持在单行中..

b->Method1()->Method2()->Method(3); // will not work?

另外,有人告诉我,将 try..catch..throw 放在其中一个 Method 中偶尔会退出链,而不会以错误的值调用下一个方法。这是真的吗?

那么如何在 C++ 中正确实现方法链?

最佳答案

这就是虚拟方法的用途。从语法错误中我了解到您是 C++ 的新手

struct Base
{
virtual Base* One() { return this; };
void TemplateMethod() { this->One(); }
};

struct Derived : public Base
{
virtual Base* One() { /* do something */ return Base::One(); }
};

当您调用 TemplateMethod 时:

int main() 
{

Base* d = new Derived();
d->TemplateMethod(); // *will* call Derived::One() because it's virtual

delete d;

return 0;
}

关于c++ - 在不同的类继承级别调用一系列函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com