daj*_*jee 1 c++ virtual inheritance abstract-class
我在Dialin中遇到麻烦,派生类是抽象的.我不确定为什么因为我所拥有的唯一虚函数具有相同的参数和相同的返回类型.从我所读到的,这是唯一的限制,但显然我错了.
这是我的代码:
标题:
class Event{
    class ModemSimV2;
public:
    Event( );
    Event( const Event &e );
    ~Event( );
    virtual void process( ModemSimV2 &m ) = 0;
protected:
    int who;        // the number of the user
    int time;       // when the event will occur
    int what;       // DIAL_IN or HANGUP
};
 class Dialin : public Event{
     class ModemSimV2;
 public:
     Dialin( int name = 0, int tm = 0 );
     Dialin( const Dialin &d );
     ~Dialin( );
     virtual void process( ModemSimV2 &m );
 private:
     int who;
     int time;
     int what;
 };
资源:
Event::Event(){
}
Event::Event( const Event &e ) {
    *this = e;
}
Event::~Event( ) {
}
Dialin::Dialin (int name, int tm )
: time( tm ), who( name ) { 
    return;
}
Dialin::Dialin ( const Dialin &d ) {
    *this = d;
}
Dialin::~Dialin( ) {
}
void Dialin::process( ModemSimV2 &m ) {        
}
问题是,有一个名为的类的两个不同的前向声明ModemSimV2:
Event::ModemSimV2          // These are different classes
Dialin::ModemSimV2         // with the same unqualified name.
在Event,签名process()是:
virtual void process( Event::ModemSimV2 &m ) = 0;
而在实际上Dialin的定义process()是:
virtual void process( Dialin::ModemSimV2 &m );
所以声明的纯虚函数Event没有被实现Dialin.