【发布时间】:2021-02-25 14:35:01
【问题描述】:
我遇到了一个简单的问题:我有一个抽象的基类,我想将它用作派生类的类型。我的意思是:
class Rule {
public:
//Return value is equal to the count of consumned chars or -1 if the given chars are invalid for this rule
virtual int parse(const std::string& text, unsigned int startIndex) = 0;
};
class OptionalRule : public Rule {
private:
Rule m_rule;
public:
OptionalRule(Rule rule) {
m_rule = rule;
}
};
这给了我以下错误代码:不允许抽象类类型的对象。现在我知道我不能拥有 Rule 的实例,但我想要的是允许 Rule 的任何子类。我该怎么做呢?我知道它与指针有关,但我不太明白它为什么或如何工作。
感谢您的帮助!
PS:我知道我必须在类 OptionalRule 中实现虚函数,这样我才能实例化它
【问题讨论】:
-
提示:如何通过值传递无法构造的对象?