Initializing a Nondirect Base Class’s Constructor

Initializing a Nondirect Base Class’s Constructor

A derived class’s member-initialization list can initialize any non-ambiguous member of its class, including base subobjects. Suppose you have a class C that is derived from B, which is in turn derived from A:

   struct A  {    A(int a);  };  struct B : public A  {    B(int b);  };  struct C: public B  {    C(): B(5), A(5) {} // error: 'A' is ambiguous  };

You want to initialize A from C’s constructor. Your compiler complains that: “‘A’ is not an unambiguous base class of ‘C’.” The problem is that A’s immediate descendant, namely B, is supposed to initialize A but you try to initialize it in C, too. To enable this initialization, make the A subobject a non-ambiguous base using virtual inheritance:

   struct B : virtual public A  {    B(int b);  };

Now you can initialize A from any other derived class, not just from B:

   struct C: public B  {    C(): B(5), A(5) {} // OK, A is a virtual base class  }; 
Share the Post:
Heading photo, Metadata.

What is Metadata?

What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular

XDR solutions

The Benefits of Using XDR Solutions

Cybercriminals constantly adapt their strategies, developing newer, more powerful, and intelligent ways to attack your network. Since security professionals must innovate as well, more conventional endpoint detection solutions have evolved

AI is revolutionizing fraud detection

How AI is Revolutionizing Fraud Detection

Artificial intelligence – commonly known as AI – means a form of technology with multiple uses. As a result, it has become extremely valuable to a number of businesses across

AI innovation

Companies Leading AI Innovation in 2023

Artificial intelligence (AI) has been transforming industries and revolutionizing business operations. AI’s potential to enhance efficiency and productivity has become crucial to many businesses. As we move into 2023, several