关于接口:Javainterface作为C ++中的通用对象类型Concept

Javainterface as generalized objecttype Concept in C++

我想在C++中使用抽象类作为接口,理由如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    class Base{
    public:
        virtual bool foo() = 0;
        int getValue() {return this->value;};

        int compare(Base other) {
            //calculate fancy stuff using Base::foo() and other given stuff through inheritance
            return result;
        }

    protected:
        int value;
    };

    class TrueChild: public Base{
    public:
        TrueChild(int value): Base() { this->value = value;}
        bool foo() {return 1;}
        //do stuff with value
    };

    class FalseChild: public Base{
    public:
        FalseChild(int value): Base() { this->value = value;}    
        bool foo() {return false;}
        //do other stuff with value
    };

但是我不能在compare方法中将base作为类型传递,因为它是一个抽象类,我不能实例化它。C++以EDCOX1为0。我如何创建一个方法来获取任何类类型的参数,该类实现了基类?

我知道它有点类似于这样的问题,这个或这个,但是这些答案没有帮助,因为它们不讨论如何以任何方式使用接口作为通用类型。

谢谢:


怎么样

1
int compare(Base const& other);

然后将其用作:

1
trueChild.compare(falseChild);