Archief - [PROG]C++ Containers

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Kemblin

Legacy Member
stel nu bvb dat ik een lijst van objecten appels wil maken, en die lijst wordt op verschillende plaatsen gebruikt. Ook in niet-member functies.

is het dan juist als ik zoiets doe?
Code:
#ifndef INC_STRING
#include<string>
#define INC_STRING
#endif

#ifndef INC_VECTOR
#include<vector>
#define INC_VECTOR
#endif

class Appel {
		std::string naam;
	public:
		Appel(std::string&);
};

class Appels {
	public:
		static std::vector<Appel> lijst;
};

of is het beter simpelweg een globale vector te maken?
of misschien iets anders ?

blaatschaap

Legacy Member
als er maar 1 lijst Appels is voor heel je programma kan je een singleton van Appels maken

een andere (en meestal betere manier) is om een pointerobject van de Appels class te maken, via een Add(Appel appel) functie appels toevoegen, en als je die Appels lijst ergens anders (in een andere class, waar dit pointerobject niet gekend is) nodig hebt het pointerobject van Appels meegeven in een functie

in de Appels class maak je dan nog functies om Appels op te vragen enzo (zowat de functies die je op een vector kan doen)


zo doe ik het meestal, maar dan moet je natuurlijk pointers kennen
zoals jij het doet kan het ook maar is niet echt proper ;)


btw:
#ifndef INC_STRING
#include<string>
#define INC_STRING
#endif

is totaal overbodig, in de string header staat het volgende al:

#ifndef _STRING_
#define _STRING_
volledige header
#endif

je zet dat dus, zoals in de string header, in je header file zelf, niet rond je include

snel voorbeeldje van een header uit een project:
Code:
#ifndef _ENEMYLIST_H_
#define _ENEMYLIST_H_

#include <vector>
#include "Enemy.h"

using namespace std;

class EnemyList
{
public:				
	EnemyList();
	virtual ~EnemyList();

	void Add(Enemy *enemy);
	Enemy* GetEnemy(int i);
	int GetSize();

private:
	vector<Enemy*> m_EnemyPtrs;

};

#endif //_ENEMYLIST_H_

Kemblin

Legacy Member
bedankt, ik snap het denkik
Code:
class Appel {
		string naam;
	public:
		Appel(string&);
};

class Appels {
		vector<Appel> lijst;
	public:		
		void add(Appel&);
		void remove(string&);
		void sort();
};

mja na een half jaar in java gewerkt te hebben moet ik nu terug mijn c++ 2e zit project afwerken en tis wel ff aanpassen moetk zeggen...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan