Re: Does object have function?
#include <iostream>
#include <string>
#include <cmath>
#include <fstream>
using namespace std;
class Base {
public:
virtual ~Base() {}
};
class Fooer {
public:
virtual void foo(){};
};
class DerivedOne : public Fooer {
public:
void foo() { cout << "DerivedOne::foo()\n"; }
};
class DerivedTwo : public Fooer {
public:
void foo() { cout << "DerivedTwo::foo()\n"; }
};
class DerivedThree: public Fooer{
};
int main() {
Fooer* bps[3];
bps[0] = new DerivedOne();
bps[1] = new DerivedTwo();
bps[2] = new DerivedThree();
for ( int i = 0; i < 3; ++i ) {
Fooer* thisOne = dynamic_cast<Fooer*>( bps[i] );
if ( thisOne )
thisOne->foo();
else{
cout<<"nothing"<<endl;
}
}
}
the result is
one
two
"Joshua Maurice" <joshuamaurice@gmail.com>
??????:2dbb59cb-2dde-44a0-a459-e6ebcd5f3cfd@g13g2000yqj.googlegroups.com...
On Oct 28, 6:02 pm, "Daniel T." <danie...@earthlink.net> wrote:
This would work:
class Base {
public:
virtual ~Base() {}
};
class Fooer {
public:
virtual void foo() = 0;
};
class DerivedOne : public Base, public Fooer {
public:
void foo() { cout << "DerivedOne::foo()\n"; }
};
class DerivedTwo : public Base, public Fooer {
public:
void foo() { cout << "DerivedTwo::foo()\n"; }
};
class DerivedThree: public Base {
};
int main() {
Base* bps[3];
bps[0] = new DerivedOne();
bps[1] = new DerivedTwo();
bps[2] = new DerivedThree();
for ( int i = 0; i < 3; ++i ) {
Fooer* thisOne = dynamic_cast<Fooer*>( bps[i] );
if ( thisOne )
thisOne->foo();
}
}
With this multiple inheritance design, I would guess that you probably
want to virtually inherit from Fooer as well (not done in the above
code).