Gå til innhold

IDisposable interface i C++/CLI


Anbefalte innlegg

Hei!

 

Jeg har akkurat begynt med å implementere PhysX for Glorg (C# OpenGL rammeverk) og lager dette som en ekstern dll i C++/CLI

 

Vel, jeg har akkurat begynt, og kommet frem til dette:

 

public ref class PhysXDevice : public System::IDisposable
{
protected:
NxPhysicsSDK *m_physx;
public:
PhysXDevice();
~PhysXDevice();

// Parameters
void SetParameter(NxParameter parameter, NxReal value);
NxReal GetParameter(NxParameter parameter);
// TODO: Add individual properties

virtual void DoDispose() = IDisposable::Dispose;
};

 

Problemet kommer ved virtual void DoDispose() = IDisposable::Dispose. Feilmeldingen er

Error 1 error C2039: 'Dispose' : is not a member of 'System::IDisposable'

noe jeg synes er litt merkelig... for IDisposable har et medlem som heter Dispose...

 

Halp? hva gjør jeg feil?

Jeg kan ikke kalle funksjonen Dispose da får jeg denne feilmeldingen

Error 2 error C2605: 'Dispose' : this method is reserved within a managed class

 

Jeg kommer til å måtte bruke IDisposable mye, så det er upraktisk om jeg ikke får det til å fungere :S

Lenke til kommentar
Videoannonse
Annonse

Fikk 404 på sidene du postet, men du hintet meg i riktig retning, så tusen takk for svar :)

 

Så altså:

 

alle unmanaged ressurser (NxPhysicsSDK i mitt tilfelle) må frigjøres i finalizeren

 

PhysXDevice::!PhysXDevice()
{
NxReleasePhysicsSDK(m_physx);
}

Endret av GeirGrusom
Lenke til kommentar

Beklager 404, hadde glemt at jeg satte hjelp til lokal på denne pc'n.

 

Men ja, unmanaged ressurser frigjør du i finalizern. Kall finalizern fra destruktoren.

 

PhysXDevice::~PhysXDevice()
{
this->!PhysXDevice();
}

PhysXDevice::!PhysXDevice()
{
NxReleasePhysicsSDK(m_physx);
}

 

Her er dok du trenger.

Endret av OldMan
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...