Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8438047
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 10, 20262026-06-10T07:36:01+00:00 2026-06-10T07:36:01+00:00

I need to derive a child class CDerived from two different base classes CBaseA

  • 0

I need to derive a child class CDerived from two different base classes CBaseA and CBaseB.

In addition, I need to call virtual functions of both parents on the derived class. Since I want to manage differently typed objects in one single vector later (this is not part of this minimal code expample), I need to call the virtual functions from a base class pointer to the derived class object:

#include <iostream>
#include <stdlib.h>

class CBaseA
{
  public:
    virtual void FuncA(){ std::cout << "CBaseA::FuncA()" << std::endl; };
};

class CBaseB
{
  public:
    virtual void FuncB(){ std::cout << "CBaseB::FuncB()" << std::endl; };
};

class CDerived : public CBaseB, public CBaseA
{};

int main( int argc, char* argv[] )
{
  // An object of the derived type:
  CDerived oDerived;

  // A base class pointer to the object, as it could later
  // be stored in a general vector:
  CBaseA* pAHandle = reinterpret_cast<CBaseA*>( &oDerived );

  // Calling method A:
  pAHandle->FuncA();

  return 0; 
}

Problem: But when running this on my computer, FuncB() is called instead of FuncA(). I get the right result, if I “flip” the parent class deklarations around, i.e.

class CDerived : public CBaseA, public CBaseB

but this doesn’t solve my problem, since I cannot be sure which function will be called.

So my question is: What am I doing wrong and what is the correct way of handling such a problem?

(I am using g++ 4.6.2, by the way)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-10T07:36:03+00:00Added an answer on June 10, 2026 at 7:36 am
    CBaseA* pAHandle = reinterpret_cast<CBaseA*>( &oDerived );
    

    Do not use reinterpret_cast for performing a conversion to a base class. No cast is required; the conversion is implicit:

    CBaseA* pAHandle = &oDerived;
    

    For converting to a derived class, use static_cast if the object is known to be of the target type or dynamic_cast if it is not.

    Your use of reinterpret_cast yields undefined behavior, hence the “odd” behavior that you see. There are few correct uses of reinterpret_cast and none of them involve conversions within a class hierarchy.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a base class DockedToolWindow : Form, and many classes that derive from
I have a base class and classes that derive from it. The base class
I have some functionality that I need in all my classes which derive from
I have class Base and classes Derived_1 , Derived_2 ... I need derived classes
I need to derive the linear/Quadratic equation from the set of examples. Is there
I have a class derived from Dictionary. I need this class to simulate a
I have a data object which has a base class with three derived classes,
I need two different DisplayTemplates for the same ViewModel. One is for displaying the
In need to create an Akka2 actor (derived from UntypedActor) as a child of
Given two 3D vectors A and B, I need to derive a rotation matrix

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.