我正在使用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/

10-10 13:35