anoniem Geplaatst: 1 februari 2007 Delen Geplaatst: 1 februari 2007 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... Quote Link naar reactie
anoniem Geplaatst: 1 februari 2007 Auteur Delen Geplaatst: 1 februari 2007 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. Quote Link naar reactie
anoniem Geplaatst: 2 februari 2007 Auteur Delen Geplaatst: 2 februari 2007 Okay, dat onderdeel "klassen" kende ik, maar die zijn ook maar in één bronbestand te gebruiken? Quote Link naar reactie
anoniem Geplaatst: 3 februari 2007 Auteur Delen Geplaatst: 3 februari 2007 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] Quote Link naar reactie
anoniem Geplaatst: 3 februari 2007 Auteur Delen Geplaatst: 3 februari 2007 Dus toch .h-bestanden. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen