c++ - 使用纯虚方法在C++中初始化抽象类

标签 c++ inheritance abstract-class pure-virtual

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

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::transform 中实现了一些东西,但现在完全迷失了。 如何初始化 Transform 类?

最佳答案

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

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

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

关于c++ - 使用纯虚方法在C++中初始化抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016239/

相关文章:

c++ - 当我们有一个模板类有模板指针时,如何使用继承

java - 为什么 java.lang.Object 不是抽象的?

python - 为什么要检查 cls 是否是 __subclasshook__ 中的类?

c++ - 如何实现自定义模板排序功能?

xml - log4j 可以从基本/根元素继承 xml 吗?

c++ - 如何开始语音质量 PESQ 测试?

c++ - 在 C++ 类继承中使用函数

java - 强制子类实现抽象子类

c++ - 优化所有记录的 SQLite 读取

c++ - Delphi 相当于 C++ 的 memset 是什么?