我不知道如何解决此错误。我已经定义了有问题的函数,但是编译器说我还没有。请帮忙。
代码如下:
class Parser{
public:
virtual void parse(stringstream& ss) = 0;
};
class Main_Parser : public Parser{
public:
Main_Parser(){
cout << "new";
}
void parse(stringstream& ss){
string s;
ss >> s;
cout << s;
}
};
int main () {
string s = "apple orange oracle";
stringstream ss(s);
Parser temp = Main_Parser();
temp.parse(ss);
}
编辑:如果这是关于拼接的,我不知道它如何丢失有关方法parse()的信息。因为我已经在Parse类中定义了它。
答案 0 :(得分:0)
问题在于类Parser
确实没有parser
函数的实现。似乎是-一个纯虚函数。通过键入Parser* temp = new Main_Parser()
,您实际上使编译器可以用他的比喻眼来寻找其派生连接类中的实现。
执行此操作的另一种方法是向该指针发送现有派生类的引用,如本例所示:
int main () {
string s = "apple orange oracle";
stringstream ss(s);
Main_Parser mp;
Parser *temp = ∓
//or Parser *temp1 = static_cast<Parser*>(&mp);
temp->parse(ss);
return 0;
}
通过这种方式,您不必担心内存泄漏问题。
解决问题的最简单方法:
int main () {
string s = "apple orange oracle";
stringstream ss(s);
Main_Parser mp;
Parser &temp = mp; // Be smart and let the beginners an easy way to use your code
temp.parse(ss);
return 0;
}