dcsimg
Login | Register   
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Oct 11, 2002

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


A Simple Way to Make Your Object RTTI & dynamic_cast Compliant


Consider this code:
 
class CA
{
//...
};

class CB
{
//...
};


CA * CB2CA(CB *pb)
{
        return dynamic_cast<CA *>(pb);
}

The CA and CB are totally unrelated classes and the CB2CA function seems to be completely useless. However, what if pb points to some kind of class that can be converted to CA?

If you try to compile this code, VC++ will fail, giving the message:
 
error C2683: dynamic_cast : 'CB' is not a polymorphic type

If you add a virtual destructor, you'll get a polymorphic type (the type that has at least one virtual function):
 
class CB
{
public:
   virtual ~CB() {};
//...
};

Now this code will be compiled with no errors.

PS: Of course, if the CB class already has a virtual function[s] there's no need to add this fake one.

PPS: Don't forget to enable RTTI support for testing this example.
Igor Soukhov
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date