devxlogo

Perform Cross Casts Properly

Perform Cross Casts Properly

A cross cast converts a multiply-inherited object to one of its secondary base classes. To demonstrate what a cross cast does, consider this class hierarchy:

 struct A{  int i;  virtual ~A () {}  };struct B{  bool b;};struct D: public A, public B{  int k;  D() { b = true; i = k = 0; } };A *pa = new D;B *pb = dynamic_cast pa;  //cross cast; convert to the second base class

The static type of pa is “pointer to A”, whereas its dynamic type is “pointer to D”. A simple static_cast cannot convert a “pointer to A” into a “pointer to B” because A and B are unrelated (your compiler issues an error message in this case). To perform the cross cast properly, the value of pb has to be calculated at run time. After all, the cross cast can appear in a source file that doesn’t even know that class D exists. To get the cross cast done properly, a dynamic cast is required, as shown in the example.

See also  10 Best Apps to Help You Read More Books in Less Time
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist