Archief - Policy based design

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
Ik ben met c++ templates bezig en probeer zowat een policy based design te implementeren.
Ik zit nu met een probleempje waar ik maar niet uitkom.

Code:
template <typename T>
class format2 { 
	public:
		format2();
		format2(size_t rows, size_t columns);
		format2(size_t rows, size_t columns, T elements[]);
		format2(format2<T> const& f);
};

template <typename T>
class format1 { 
	public:
		format1();
		format1(size_t rows, size_t columns);
		format1(size_t rows, size_t columns, T elements[]);
		format1(format1<T> const& f);
};



template <typename FORMAT>
class m : public FORMAT { 
	public:
		m() : FORMAT () { }
		m(size_t rows, size_t columns) : FORMAT (rows, columns) { }
		[COLOR="Red"]=>[/COLOR] m(size_t rows, size_t columns, FORMAT :: [COLOR="Red"][B]T[/B] [/COLOR]elements[]) : FORMAT (rows, columns, elements) { }
		[COLOR="Red"]=>[/COLOR] m(m< FORMAT > const& m) : FORMAT (FORMAT) { }
};

De rode template-parameter T wordt niet herkend, wat wss wel logisch zal zijn maar ik zie het even niet momenteel. De copy constructor eronder werkt ook niet echt. Ik wil uiteindelijk zoiets kunnen doen:

Code:
m< format1<int> > m1(3, 4, elements);

Iemand een id'tje ?

nguaroth

Legacy Member
Het is logisch dat deze niet herkent wordt, aangezien je bij de laatste block code template <typename FORMAT> gebruikt ipv template <typename T>

Kemblin

Legacy Member
hmm ik snap u niet volledig denk ik?

aangezien die laatste klasse overerft van FORMAT leek het mij logisch dat ook T wordt overgeerft?

MacK

Legacy Member
Op het moment dat je je klasse m definieert kan FORMAT gelijk wat zijn. Uw klasse m kan dus ook niet weten wat hij allemaal overerft (omdat dat pas vast staat wanneer ge uw template klasse instantieert). Dus kent hij die T ook niet.

Kemblin

Legacy Member
al ff geleden maar heb het net getest en het werkt zo :) thanks Nocturn!

Enig id wat er bij mij fout liep?

nguaroth

Legacy Member
Wel, @ compile time weet de compiler niet welk type FORMAT precies heeft, waardoor hij ook nie kan weten wat er precies in FORMAT zit.
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