Vraag & Antwoord

Programmeren

Meerdere bronbestanden en definiëren

4 antwoorden
  • 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...
  • 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.
  • Okay, dat onderdeel "klassen" kende ik, maar die zijn ook maar in één bronbestand te gebruiken?
  • 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]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.