C++#
De VEX IQ (2e generatie) C++ API-referentie beschrijft de klassen, objecten, constructors, lidfuncties en variabelen die worden gebruikt in VEXcode IQ C+±projecten.
Gebruik deze referentie wanneer u wilt begrijpen hoe een apparaat of functie wordt gemaakt, wilt controleren welke functiesignatuur u moet gebruiken, of verwante lidfuncties in een klasse wilt vergelijken.
C+±opdrachten worden gebruikt in VEXcode IQ C+±projecten. C++ API-informatie kan ook projecten ondersteunen die zijn geschreven in Visual Studio Code met de VEX Visual Studio Code-extensie.
Hoe lees je een C+±klassenpagina?#
Een C+±klassenpagina volgt doorgaans deze volgorde:
Inleiding - Legt uit wat de klasse inhoudt en wanneer deze nuttig is.
Afgeleide klassen - Geeft een overzicht van alle klassen die, indien van toepassing, op deze klasse zijn gebaseerd.
Klasseconstructor of constructors - Toont de syntaxis die gebruikt wordt om een object van de klasse te creëren.
Klasse-destructor - Toont de syntaxis die wordt gebruikt om het object te vernietigen en de bijbehorende resources vrij te geven, indien van toepassing.
Parameters - Hierin worden de constructorparameters uitgelegd die worden gebruikt bij het aanmaken van het object.
Voorbeeld - Laat zien hoe je het object in code kunt maken.
Lidfuncties - Een lijst met de functies die bij de klasse horen, vaak gegroepeerd op doel.
Functiebeschrijvingen - Hierin wordt elke lidfunctie uitgelegd, inclusief beschikbare functies, parameters, retourwaarden, opmerkingen en voorbeelden.
Niet elke pagina bevat alle onderdelen. Sommige pagina’s bevatten bijvoorbeeld geen afgeleide klassen en sommige functies hebben geen parameters of retourwaarden.
Algemene C++ API-elementen#
Element |
Wat het betekent |
|---|---|
Klas |
Het C+±type voor een apparaat of functie, zoals |
Voorwerp |
Een benoemde instantie, gemaakt van een klasse, zoals |
Constructor |
De code die gebruikt wordt om een object van een klasse te maken. |
Lidfunctie |
Een commando dat op een object wordt aangeroepen, zoals |
Beschikbare functie |
Eén exacte functiesignatuur die gebruikt kan worden voor een lidfunctie. Sommige lidfuncties hebben meer dan één beschikbare functie. |
Parameter |
Een waarde die aan een constructor of functie wordt doorgegeven om te bepalen wat deze doet. |
Retourwaarde |
Een waarde die een functie teruggeeft, zoals |
Basis C+±vocabulaire#
Termijn |
Wat het betekent |
|---|---|
Variabele |
Een naam die een waarde opslaat, zoals |
Type |
Het soort gegevens dat iets opslaat, zoals |
Snaar |
Tekst tussen aanhalingstekens, zoals |
int |
Een positief of negatief geheel getal, zoals |
dubbele |
Een getaltype dat een decimaal kan bevatten, zoals |
bool |
Een waarde die ofwel |
Argument |
Een waarde die wordt doorgegeven aan een lidfunctie of functieaanroep, zoals |
Constructors en objecten#
Voordat je lidfuncties van veel C+±klassen kunt gebruiken, moet er een object bestaan. De constructor laat zien hoe je dat object aanmaakt.
Een apparaatobject kan bijvoorbeeld worden aangemaakt door de constructor de benodigde poort- of configuratiegegevens te geven:
motor Motor1 = motor(PORT1, false);
Nadat het object is aangemaakt, kunnen de lidfuncties ervan worden aangeroepen:
Motor1.spin(forward);
In VEXcode wordt de apparaatconfiguratie vaak automatisch gegenereerd via het menu ‘Apparaat’. In Visual Studio Code met de VEX-extensie moeten constructors mogelijk handmatig worden geschreven.
De juiste beschikbare functie kiezen#
Sommige lidfuncties hebben meer dan één beschikbare functie. Elke functie gebruikt een andere set parameters, dus kies de functie die overeenkomt met de waarden die uw project nodig heeft.
Een aandrijffunctie kan bijvoorbeeld een versie hebben die de huidige snelheid gebruikt en een andere versie waarmee het project zelf een snelheid kan kiezen:
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Beide functies roepen driveaan, maar de tweede functie biedt meer controle omdat deze snelheidsparameters bevat.
Voorbeeld van een functie-invoer#
drijfveer#
drive de robot beweegt oneindig vooruit of achteruit. De robot blijft bewegen totdat er een andere actie wordt gegeven, zoals draaien of stoppen.
Beschikbare functies
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De richting waarin de robot beweegt: |
|
|
De snelheid waarmee gereden wordt, varieert van 0% tot 100% bij gebruik van |
|
|
De snelheidseenheid: |
Retourwaarde
Deze functie retourneert geen waarde.
Opmerkingen
driveis non-waiting. Het project zal de volgende regel code direct uitvoeren.De robot blijft bewegen totdat
stopwordt aangeroepen of een andere aandrijffunctie wordt uitgevoerd.isDoneenisMovingworden niet gebruikt metdriveomdatdrivegeen doelafstand heeft.
Voorbeeld
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
Wachtgedrag en niet-wachtgedrag#
Sommige C+±bewegingsfuncties wachten tot een actie is voltooid voordat het project naar de volgende regel code gaat. Andere functies starten een actie en zorgen ervoor dat de volgende regel direct wordt uitgevoerd.
Wachten - Het project wacht tot de functie is voltooid.
Niet-wachtend - Het project start de functie en gaat direct verder naar de volgende regel.
Sommige functies bevatten een parameter zoals waitForCompletion om dit gedrag te kiezen. Voor die functies zorgt true er meestal voor dat het project wacht, terwijl false ervoor zorgt dat de volgende regel direct wordt uitgevoerd.
Opdrachten in subsecties#
C+±opdrachten zijn georganiseerd per apparaat of onderwerp. Opdrachten voor bijvoorbeeld de aandrijflijn, beweging, brein, controller, slimme poort, traagheidssensor, console en logica zijn gegroepeerd in hun eigen subsecties.