Dela via


Översätta till Visual Basic från C++

Med programmeringsspråket C++ kan utvecklare direkt komma åt minnet som lagrar en viss variabel. Minnespekare ger den här direktåtkomsten. I Visual Basic hanteras pekare åt dig. En parameter som deklareras som en pekare till en int i C++ motsvarar till exempel en parameter som deklareras i Visual Basic som en ByRefHeltal.

En parameter som deklareras som sträng i Visual Basic deklareras som en pekare till en BSTR- i C++. Att ange en strängpekare till NULL- i C++ motsvarar att ställa in strängen på vbNullString konstant i Visual Basic. Att skicka en sträng med noll längd ("") till en funktion som är utformad för att ta emot NULL- fungerar inte, eftersom detta skickar en pekare till en sträng med noll längd i stället för en nollpekare.

C++ stöder datacontainrar, nämligen strukturer och fackföreningar, som inte har någon motsvarighet i tidiga versioner av Visual Basic. Därför omsluter COM-objekt vanligtvis information som lagras i strukturer och unioner i objektklasser. Vissa COM-objekt kan dock innehålla strukturer, vilket gör att delar av objektets metoder eller funktioner inte är tillgängliga för Visual Basic.

Vissa C++-datatyper stöds inte i Visual Basic, till exempel osignerade typer och HWND- typer. Metoder som accepterar eller returnerar dessa datatyper är inte tillgängliga i Visual Basic.

Visual Basic använder Automation-kompatibla datatyper som interna datatyper. Därför är C++-datatyper som är Automation-kompatibla också kompatibla med Visual Basic. Datatyper som inte är Automation-kompatibla kanske inte kan konverteras till Visual Basic.

I följande tabell visas de datatyper som stöds av Visual Basic och deras VARTYPE- motsvarigheter. VARTYPE- är en uppräkning som visar Automation-varianttyperna.

Visual Basic-datatyp VARTYPE-motsvarighet
Heltal
16 bitar, signerad, VT_I2
Lång
32 bitar, signerad, VT_I4
datum
VT_DATE
Valuta
VT_CY
Objekt
*VT_DISPATCH
String
VT_BSTR
Boolean
VT_BOOL
Valuta
VT_DECIMAL
enkel
VT_R4
Dubbel
VT_R8
decimaler
VT_DECIMAL
byte
VT_DECIMAL
Variant
VT_VARIANT

Alla parametrar i Visual Basic, om de inte är märkta med nyckelordet ByVal, skickas med referens (som pekare) i stället för efter värde.

C++ och Visual Basic skiljer sig något åt i hur de representerar egenskaper. I C++ representeras egenskaperna som en uppsättning accessorfunktioner, en som anger egenskapsvärdet och en som hämtar egenskapsvärdet. I Visual Basic representeras egenskaper som ett enskilt objekt som kan användas för att hämta eller ange egenskapsvärdet.

Översättning till Visual Basic