473,732 Members | 1,991 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Convert Multiple Derived Class into CLI/C++

Ed
Hi, dear all,
Now there is a issue to convert C++ into CLI/C++. But there is a issue
block me.

Say Class MN is multiple derived from class MM and NN. But the CLI
only allow single class derived.

My understanding is to create a new interface INN with same method
declaration with class NN.
And let class MN derived from MM and INN, then copy the implementation
of NN method into class MN. And also make class NN derived from
interface INN.

But this method is ugly I think.

Is there some nice way to make a nice migration to CLI code?

Thank you in advance!

Aug 9 '07 #1
3 1591
Ed wrote:
Hi, dear all,
Now there is a issue to convert C++ into CLI/C++. But there is a issue
block me.

Say Class MN is multiple derived from class MM and NN. But the CLI
only allow single class derived.

My understanding is to create a new interface INN with same method
declaration with class NN.
And let class MN derived from MM and INN, then copy the implementation
of NN method into class MN. And also make class NN derived from
interface INN.

But this method is ugly I think.

Is there some nice way to make a nice migration to CLI code?
Not much nicer, no. One thing that could help a little bit is rather than
re-implementing INN, hold an instnace of NN as a private member and write
simple forwarders for the implementation of INN. That's essentially what
the compiler does under the hood for multiple inheritance anyway.

In practice, multiple inheritance should be rare - if you've got a codebase
with lots of multiple inheritance, you'll have a rough time converting it
all to CLI code.

Keep in mind though, that you don't have to convert all of your classes to
'ref class'. Only those classes that need to be accessible from other .NET
assemblies need be converted - the C++/CLI compiler can still compile your
multiply-inherited classes in a /clr build, but those classes will not be
managed by the CLR - they'll still live on the native heap (or stack) and
their lifetimes will have to be managed by you (no garbage collection).

-cd
Aug 9 '07 #2
There is no elegant way to directly convert multiple inheritance to single
inheritance + interfaces. It would be better to refactor so that you truly
have single inheritance + interfaces instead of trying to simulate multiple
inheritance.
--
David Anton
http://www.tangiblesoftwaresolutions.com
Convert between VB, C#, and C++
Instant C#
Instant VB
Instant C++
C++ to C# Converter
C++ to VB Converter
"Ed" wrote:
Hi, dear all,
Now there is a issue to convert C++ into CLI/C++. But there is a issue
block me.

Say Class MN is multiple derived from class MM and NN. But the CLI
only allow single class derived.

My understanding is to create a new interface INN with same method
declaration with class NN.
And let class MN derived from MM and INN, then copy the implementation
of NN method into class MN. And also make class NN derived from
interface INN.

But this method is ugly I think.

Is there some nice way to make a nice migration to CLI code?

Thank you in advance!

Aug 9 '07 #3
Ed
On 8 9 , 10 08 , David Anton <DavidAn...@dis cussions.micros oft.com>
wrote:
There is no elegant way to directly convert multiple inheritance to single
inheritance + interfaces. It would be better to refactor so that you truly
have single inheritance + interfaces instead of trying to simulate multiple
inheritance.
--
David Antonhttp://www.tangiblesof twaresolutions. com
Convert between VB, C#, and C++
Instant C#
Instant VB
Instant C++
C++ to C# Converter
C++ to VB Converter

"Ed" wrote:
Hi, dear all,
Now there is a issue to convert C++ into CLI/C++. But there is a issue
block me.
Say Class MN is multiple derived from class MM and NN. But the CLI
only allow single class derived.
My understanding is to create a new interface INN with same method
declaration with class NN.
And let class MN derived from MM and INN, then copy the implementation
of NN method into class MN. And also make class NN derived from
interface INN.
But this method is ugly I think.
Is there some nice way to make a nice migration to CLI code?
Thank you in advance!

Thanks for all of you! So there is no elegant way to handle it.

MN should inherit from MM and INN, and put the NN implementation into
MN class.

Aug 9 '07 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

11
8103
by: Josh Lessard | last post by:
Hi all. I'm maintaining a C++ program and I've come across a nasty piece of code that works, but I just don't understand why. I'm not actually this part of the program, but I really want to know how and why it works. I'll post a simplified version of it below and ask my questions afterwards: class Base { void *function_ptr;
6
2839
by: Paul | last post by:
In real life situation, do we ever come across a situation where we would need two base objects in an object. A snippet is worth 1000 words (: so... class Base { }; class Derived1:public Base { };
3
2554
by: Jess | last post by:
Hello, I've been reading Effective C++ about multiple inheritance, but I still have a few questions. Can someone give me some help please? First, it is said that if virtual inheritance is used, then "the responsibility for initializing a virtual base is borne by the most derived class in the hierarchy". What does it mean? Initializing base class is usually done automatically by the compiler, but a derived class can invoke the base...
2
2093
by: Immortal Nephi | last post by:
You may have heard diamond shape. You create one base class. One base class has member functions and member variables. You create two derived classes. All member functions and member variables from one base class are inherited into two derived classes. You want both derived classes to share member variables of the one base class. You can do this way so you don't need keyword -- friend. You can add virtual public One_Base_Class on...
0
8944
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8773
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9445
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9306
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9180
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8186
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6733
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
2
2721
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2177
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.