我正在使用C++中的Cascades开发BlackBerry 10应用程序。
我只是一个初学者,这个问题让我很困惑。
我有一个Parser
类和一个派生类LicenseParser
。
Class Parser {
// implementation
}
和
Class LicenseParser : public Parser {
// ...
public:
void Parse();
}
在另一个文件中:
Parser* p= new LicenseParser();
p->Parse();
但是我得到一个错误:
class Parser' has no member named 'parse'
方法
Parse
是在派生类中声明的,因此我知道可以在无需在Parser
类中声明它的情况下使用该方法!我该如何纠正?
最佳答案
发生错误是因为p
是指向Parser
的指针,而不是指向LicenseParser
的指针。
尽管事实上您知道p
实际上指向LicenseParser
,但是您对基类指针的赋值意味着您选择不让编译器知道它。
您应该在基类中具有虚拟Parse
成员函数,或者将p
变量改为LicenseParser*
。
关于c++ - 使用在派生类中声明的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20269732/