如何使函数返回由子类定义的值? C ++

时间:2018-01-06 02:21:20

标签: c++

我有一个由超类定义的实例,但也有一个子类。被调用的函数是Super类中的函数,因为这与我的所有实例相同。但是,这个函数的结果应该由它们所在的子类定义。这是一个简化的例子:

class superClass{ 
public:
    //the "called" function, should not create a value on its own (empty)
    vector<int>vec(){...}       
}

class subClass1:public superClass{
public:
    //should set vector to the desired value when it is of type SubClass1
    vector<int>vec(){...}   
} 

class subClass2:public superClass{
public:
    //should set vector to the desired value when it is of type SubClass2
    vector<int>vec(){...}   
} 


...

我不知道如何实际链接这些函数调用。该函数正确运行,因为每当我在superClass中直接赋值时,都可以打印。如果我尝试使用subClass,则会出现错误(因为尝试打印不存在的项目)。

非常感谢有关如何做到这一点的任何帮助。

2 个答案:

答案 0 :(得分:0)

所以,比如:

class SuperClass
{ 
    public:
        virtual vector<int> vec() = 0;
};

class SubClass1 : public SuperClass
{
    public:
        virtual vector<int> vec()
        {
            vector<int> v;
            ...
            return v;
        }
};

class SubClass2 : public SuperClass
{
    public:
        virtual vector<int> vec()
        {
            vector<int> v;
            ...
            return v;
        }
};

或者,如果SuperClass不是抽象的,请将其实现为:

class SuperClass
{ 
    public:
        virtual vector<int> vec()
        {
            vector<int> v;
            return v;
        }
};

答案 1 :(得分:0)

virtual功能是您正在寻找的功能。

使用virtual前缀在超类中声明函数,然后每当调用该函数时,实际调用的重载将取决于实际对象的类型。