我只是想不出一种方法来调用具有通用性的函数。我有一个代码,必须在不同时刻调用两个不同类中的函数。
我有 A 类和 B 类,我可以访问一次或其他时间。或者我访问 A 或我访问 B。不是同一类型。
我编写了这个程序,但我无法想象如何做到这一点。或者这是否有利于性能或编码。我只想消除C类,但我不知道如何。
有什么想法吗?
class MyClass { public: MyClass() {} //contructor padrão, não deve ser utilizado isoladamente virtual int a() = 0; virtual int b() = 0; int c() { return b(); } }; class A : public MyClass { public: int a() { return 1; } int b() { return 1; } int d() { return 1; } }; class B : public MyClass { public: int a() { return 1; } int b() { return 1; } int e() { return 1; } }; class C { public: A ca; B cb; enum TIPO { A, B }; TIPO Tipo; C(TIPO tipo) { Tipo = tipo; } int a() { switch(Tipo) { case A: return ca.a(); break; case B: return cb.b(); break; default: break; } } }; void main() { C c(C::B); c.a(); return; }
最佳答案
如果我没理解错的话,你是在试图消除成员 (ca,cb),而只是调用适当的基类方法。
如果是这种情况,可以使用:
switch(Tipo) {
case A:
return A::a();
case B:
return B::a();
}
但是,我建议重新审视您的设计。通常,这种情况通常可以通过重新思考/重新设计类设计来处理,以便有一个定义 a() 的基类或接口(interface),而不是创建一个具有 2 个基类的具体类,而是创建两个特定的,从单个基类派生的具体类。这里不需要多重继承。 (这尤其正确,因为您在构建时就知道类型。)
关于c++ - 同一个函数在不同的时间调用不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059432/