Ga naar inhoud

Meerdere bronbestanden en definiëren


anoniem

Aanbevolen berichten

Hallo, Ik wil voor mijn programma (in C++) graag meerdere bronbestanden gebruiken, om alles overzichtelijk te houden. Wat ik wil doen is één bestand maken met daarin de declaratie/definitie van alle variabelen, die in andere bestanden gebruikt kunnen worden. Nu is de vraag alleen: Hoe? Met headers? Of kan het ook door een gewoon .cpp-bestand toe te voegen, en dit als eerste te laten compileren? Dat laatste lijkt me het handigste, alleen lukt het niet...
Link naar reactie
Ew, in C++ is het gangbaar dat je Object Georienteerd (OO) programmeert. Dus met classes. Daar zet je je variabelen in. Je kunt het ook op de C-manier doen met ADT's (abstracte data types). Vrije variabelen worden meestal als lelijk gezien. Omdat ik vermoed dat je sommige elementaire dingen nog niet begrijpt: In het .h-bestand (header-bestand) staan declaraties van functies. De echte implementatie staat in het .cpp bestand. Wanneer je je C++ project compileert zal ieder .cpp bestand afzonderlijk worden gecompileerd tot een object-bestand (.obj). In de obj wordt slechts verwezen naar externe functies (volgens de declaratie die je hebt gegeven in de .h). Vervolgens komt de linker alle .obj's bij elkaar plakken en maakt er 1 exe, dll of zo van. Wordt een functie niet gevonden (doordat je een functie bijvoorbeeld wel hebt gedeclareerd maar niet geimplementeerd) dan krijg je een linker error.
Link naar reactie
Hoe bedoel je "in één bronbestand"? Voorbeeldje van een heel eenvoudig c++ projectje: TestKlasse.h (declaratie van TestKlasse) [code:1:2c3bf50c1d]#ifndef TESTKLASSE_H #define TESTKLASSE_H class TestKlasse { public: TestKlasse(); ~TestKlasse(); public: void doeIets(); private: int m_aantal; }; #endif[/code:1:2c3bf50c1d] TestKlasse.cpp (implementatie) [code:1:2c3bf50c1d]#include <iostream> #include "TestKlasse.h" using namespace std; TestKlasse::TestKlasse() { // Constructor: initializatie van klasse m_aantal = 0; } TestKlasse::~TestKlasse() { // Destructor } void TestKlasse::doeIets() { m_aantal++; cout << "Ik heb nu " << m_aantal << " keer iets gedaan." << endl; }[/code:1:2c3bf50c1d] en de main: [code:1:2c3bf50c1d]#include "TestKlasse.h" int main(void) { int i; TestKlasse test; // Doe 10 keer iets for (i = 0; i < 10; i++) { test.doeIets(); } }[/code:1:2c3bf50c1d]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...