我正在尝试解决这个问题 - 我有一个基类:
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/