I think that my previous post could answer the question - so you can consume both methods from a managed C++ client? If the IL is same for both methods, then at least Microsoft should have added a HideFromNonMcppCompilers (or something like this) to the method as well, so non-MC++ clients cannot see the "offending" method.
I have changed the code to :
public __gc class MyClass { public:
void foo(MyClass* const a) { System::Console::WriteLine("void foo(MyClass* const a)"); }
void foo(const MyClass* a) { System::Console::WriteLine("void foo(const MyClass* a)"); }
void boo() { const MyClass* myClass; this->foo(myClass); }
void boo1() { MyClass* const myClass = 0; this->foo(myClass); }
};
Then created C# executable with main:
MyClass a = new MyClass(); a.boo(); a.boo1();
The output is:
void foo(const MyClass* a) void foo(MyClass* const a)
The IL code for those methods differ only by method tokens.
B.
-----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Bogdan Lachendro Sent: Friday, November 19, 2004 4:48 PM To: [EMAIL PROTECTED] Subject: Re: [ADVANCED-DOTNET] const modifier in method parameter - managed c++
On 2004-11-19 15:41, Stoyan Damov wrote:
Are you new to .NET? AFAIK no .NET-enabled language except C++ supports object const-ness. It is interesting though that you managed to compile the class with the MC++. In .NET (as opposed to C++, where const rules) you'll have to learn to deal with readonly (initonly) fields, get/set properties, read-only collections (or similar patterns) to prevent object clients to modify the instance, etc., etc.
IMHO losing const is a drawback but this has been discussed many times
and I don't want to start any religious wars.
Maybe I wasn't clear enough. Or perhaps I should make the question different. I wonder why the MC++ compiler allows the constructs as below and generates the same IL code for both of the methods.
Regards, Bogdan
-----Original Message----- From: Unmoderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Bogdan Lachendro Sent: Friday, November 19, 2004 4:11 PM To: [EMAIL PROTECTED] Subject: [ADVANCED-DOTNET] const modifier in method parameter - managed c++
Hi,
Lets say I have a class:
public __gc class MyClass { public:
void foo(MyClass* const a) { }
void foo(const MyClass* a) { } };
Why is the IL code generated by MVC++ the same for both those methods?
Is there any way to use such method in C# code? Currently I have:
e:\classlibrary1\class1.cs(34,13): error CS0121: The call is ambiguous
between the following methods or properties: 'ManagedClass.MyClass.foo(ManagedClass.MyClass)' and 'ManagedClass.MyClass.foo(ManagedClass.MyClass)'
Thanks,
Regards, Bogdan
=================================== This list is hosted by DevelopMentorŽ http://www.develop.com Some .NET courses you may be interested in:
Essential .NET: building applications and components with C# November 29 - December 3, in Los Angeles http://www.develop.com/courses/edotnet
View archives and manage your subscription(s) at http://discuss.develop.com
=================================== This list is hosted by DevelopMentorŽ http://www.develop.com Some .NET courses you may be interested in:
Essential .NET: building applications and components with C# November 29 - December 3, in Los Angeles http://www.develop.com/courses/edotnet
View archives and manage your subscription(s) at http://discuss.develop.com
-- Bogdan Lachendro mailto:lachu(at)poczta.fm http://www.the.king.of.pl TEL +48606318657 UIN 66844735 GG 1469796 A wise man changes his mind, a fool never will...
=================================== This list is hosted by DevelopMentorŽ http://www.develop.com Some .NET courses you may be interested in:
Essential .NET: building applications and components with C# November 29 - December 3, in Los Angeles http://www.develop.com/courses/edotnet
View archives and manage your subscription(s) at http://discuss.develop.com
=================================== This list is hosted by DevelopMentorŽ http://www.develop.com Some .NET courses you may be interested in:
Essential .NET: building applications and components with C# November 29 - December 3, in Los Angeles http://www.develop.com/courses/edotnet
View archives and manage your subscription(s) at http://discuss.develop.com
-- Bogdan Lachendro mailto:lachu(at)poczta.fm http://www.the.king.of.pl TEL +48606318657 UIN 66844735 GG 1469796 A wise man changes his mind, a fool never will...
=================================== This list is hosted by DevelopMentorŽ http://www.develop.com Some .NET courses you may be interested in:
Essential .NET: building applications and components with C# November 29 - December 3, in Los Angeles http://www.develop.com/courses/edotnet
View archives and manage your subscription(s) at http://discuss.develop.com