使用纯虚拟方法在C 中初始化抽象类

Initialising an abstract class in c++ with pure virtual method

本文关键字:初始化 抽象类 方法 虚拟      更新时间:2023-10-16

我正在尝试解决这个问题 - 我有一个基类:

class Original {
private:
    string inputPath;
    string outputPath;
public:
    void takeInput(string path);
    void putOutput(string input, string output);
    virtual void doFilter(ifstream &in, ofstream &out) = 0;
    virtual char transform(char a) = 0;   
};

和一个实现它的类:

class Transform : public Original {
public:
    char transform(char a);
};

但是,当我尝试在Main中使用Transform类时,例如

Transform t;
Original *org = *t;

它给我一个错误

Variable type 'Transform' is an abstract class.

我已经在transform ::变换中实现了一些东西,现在完全丢失了。如何初始化转换类?

Original中有两个纯虚拟成员函数:

class Original {
    // ...
    virtual void doFilter(ifstream &in, ofstream &out) = 0;
    virtual char transform(char a) = 0;   
};

您在Transform中提供了transform的替代,但doFilter仍然是纯虚拟的。由于Transform具有纯虚拟成员函数,因此它也被认为是无法构建的抽象类。为了构建Transform,您还需要为第二个功能提供覆盖。