Click here to Skip to main content
15,900,108 members
Home / Discussions / Managed C++/CLI
   

Managed C++/CLI

 
GeneralRe: Managed and Unmanaged structures Pin
Paul Selormey27-Feb-03 0:20
Paul Selormey27-Feb-03 0:20 
GeneralRe: Managed and Unmanaged structures Pin
-=jarl=-27-Feb-03 0:22
-=jarl=-27-Feb-03 0:22 
GeneralManaged/Unmanaged: pinning ptr madness Pin
VizOne25-Feb-03 22:04
VizOne25-Feb-03 22:04 
GeneralRe: Managed/Unmanaged: pinning ptr madness Pin
Jeff J26-Feb-03 16:24
Jeff J26-Feb-03 16:24 
GeneralRe: Managed/Unmanaged: pinning ptr madness Pin
VizOne27-Feb-03 1:56
VizOne27-Feb-03 1:56 
GeneralRe: Managed/Unmanaged: pinning ptr madness Pin
VizOne28-Feb-03 0:31
VizOne28-Feb-03 0:31 
GeneralRe: Managed/Unmanaged: pinning ptr madness Pin
Jeff J28-Feb-03 22:25
Jeff J28-Feb-03 22:25 
GeneralImplementing IDisposable Pin
VizOne24-Feb-03 9:49
VizOne24-Feb-03 9:49 
Hi there!

I am currently currently working .net classes that implement IDisposable
following the msdn-guidelines, but I have a problem I hope you can help me
with:

Let's say these are my classes:
<br />
public __gc class B : public IDisposable<br />
{<br />
public:<br />
  // Destructor calls Dispose(bool)<br />
  ~B() { Dispose(false); }<br />
  // Implements interface<br />
  virtual void Dispose() { Dispose(true); GC::SuppressFinalize(this); }<br />
  // this is the workhorse, it handles manual and finalizer<br />
  // disposing differently as recommended by MS<br />
  virtual void Dispose(bool arg) { /* whatever */ }<br />
};<br />
<br />
<br />
public __gc class D : public B<br />
{<br />
public:<br />
  // overrides Dispose(bool), but ultimatly calls B::Dispose(bool)<br />
  virtual void Dispose(bool arg) { /* whatever */  B::Dispose(arg); }<br />
};<br />

Looks nice, but does not work Frown | :(

I can't do something like that:
<br />
D* d = new D();<br />
d->Dispose();<br />

as the hide-by-name convention does not allow that. In native C++ I could
use a using declaration:

<br />
public __gc class D : public B<br />
{<br />
  using B::Dispose;<br />
/*...*/<br />
};<br />


and everything was fine. However, this is not allowed in .net. Nevertheless
this implementation of IDispose is used throughout the framework. How did MS
do this? Did I miss something? Is it only possible in C#?

Thanks in advance.

- Andre (VizOne) Loker
GeneralRe: Implementing IDisposable Pin
Paul Selormey25-Feb-03 0:23
Paul Selormey25-Feb-03 0:23 
GeneralRe: Implementing IDisposable Pin
VizOne25-Feb-03 0:30
VizOne25-Feb-03 0:30 
GeneralRe: Implementing IDisposable Pin
Paul Selormey25-Feb-03 0:49
Paul Selormey25-Feb-03 0:49 
GeneralRe: Implementing IDisposable Pin
VizOne25-Feb-03 0:58
VizOne25-Feb-03 0:58 
GeneralRe: Implementing IDisposable Pin
Paul Selormey25-Feb-03 1:48
Paul Selormey25-Feb-03 1:48 
GeneralRe: Implementing IDisposable Pin
VizOne25-Feb-03 2:45
VizOne25-Feb-03 2:45 
GeneralRe: Implementing IDisposable Pin
Paul Selormey25-Feb-03 2:54
Paul Selormey25-Feb-03 2:54 
QuestionManaged type??? Pin
Orkun GEDiK21-Feb-03 12:49
Orkun GEDiK21-Feb-03 12:49 
AnswerRe: Managed type??? Pin
Paul Selormey23-Feb-03 1:46
Paul Selormey23-Feb-03 1:46 
GeneralRe: Managed type??? Pin
Orkun GEDiK23-Feb-03 3:55
Orkun GEDiK23-Feb-03 3:55 
GeneralRe: Managed type??? Pin
Paul Selormey23-Feb-03 23:49
Paul Selormey23-Feb-03 23:49 
GeneralRe: Managed type??? Pin
Orkun GEDiK24-Feb-03 10:48
Orkun GEDiK24-Feb-03 10:48 
GeneralRe: Managed type??? Pin
Paul Selormey25-Feb-03 0:30
Paul Selormey25-Feb-03 0:30 
GeneralRe: Managed type??? Pin
Orkun GEDiK25-Feb-03 10:59
Orkun GEDiK25-Feb-03 10:59 
GeneralAppDomain question... Pin
Orkun GEDiK21-Feb-03 11:28
Orkun GEDiK21-Feb-03 11:28 
GeneralProblems working witk wav data files Pin
matlab21-Feb-03 4:03
matlab21-Feb-03 4:03 
GeneralUnverifiable assembly 'GIS.View' failed policy check Pin
Paul Selormey16-Feb-03 22:42
Paul Selormey16-Feb-03 22:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.