c++ - 同一个函数在不同的时间调用不同的类

标签 c++ class

我只是想不出一种方法来调用具有通用性的函数。我有一个代码,必须在不同时刻调用两个不同类中的函数。

我有 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/

相关文章:

python - 装饰类方法以构建方法注册表

java - 通过不同类传递值的最佳设计模式

c++ - 对使用 unique_ptr 和自定义删除器感到困惑

c++ - boost spirit 语法错误 - "no type named ‘size’ 中的 ‘struct boost::spirit::unused_type’“

angular - Typescript 中接口(interface)和类的区别

c++ - 使用类指针与实例

c# - 为什么将结构转换为类似类的工作?

C++ 构造函数和静态成员

c++ - 链接错误 : Duplicate Symbol

c++ - c/c++ 左移无符号与有符号