[Dune] Barton-Nackman.
Robert Kloefkorn
robertk at mathematik.uni-freiburg.de
Thu Jul 27 16:08:30 CEST 2006
Hallo Dune,
nochmal einen Nachtrag zum Barton-Nackman Trick und der DataHandle
Geschichte.
Sowohl Peters Argument mit der deutlich gekennzeichneten Schnittstelle
als auch Markus Bemerkungen zur schwierigeren Implementierung sind richtig.
Mit folgendem Vorschlag kann man meiner Meinung nach beide Sachen unter
einen Hut bringen.
Ich würde die Schnittstelle dahigehend ändern, dass
die Klasse CommDataHandleIF nur noch einen template Parameter erhält,
nämlich
template <class DataHandleTraits>
class CommDataHandleIF
{
typedef typename DataHandleTraits :: DataHandleImp DataHandleImp;
public:
typedef typename DataHandleTraits :: DataType DataType;
....
};
Damit wäre das gleich erreicht. Ausserdem ist das Interface damit
stabiler gegenüber Änderungen, welche viel leichter druchgezogen wertden
können, da lediglich der Inhalt der Traits, aber nicht die template
Parameter Liste geändert werden muss.
Die Ableitung sieht dann so aus:
// forward deklaration
template <class IndexSetImp,
class GlobalIdSetImp,
class DataVectorType >
class ExampleDataHandle;
// Traits of ExampleDataHandle
template <class IndexSetImp,
class GlobalIdSetImp,
class DataVectorType >
struct ExampleDataHandleTraits
{
typedef ExampleDataHandle<IndexSetImp,GlobalIdSetImp,DataVectorType>
DataHandl
typedef typename DataVectorType :: value_type DataType;
};
// ExampleDataHandle
template <class IndexSetImp,
class GlobalIdSetImp,
class DataVectorType >
class ExampleDataHandle
: public CommDataHandleIF <
ExampleDataHandleTraits<IndexSetImp,GlobalIdSetImp,DataVectorType> >
{
...
};
Wenn niemand etwas dagegen hat, dann stelle ich das nochmal so um.
Grüßle
R
--
Robert Klöfkorn <robertk at mathematik.uni-freiburg.de>
Mathematisches Institut Tel: +49 (0) 761 203 5631
Abt. für Angewandte Mathematik Fax: +49 (0) 761 203 5632
Universität Freiburg
Hermann-Herder-Str. 10
79104 Freiburg
http://www.mathematik.uni-freiburg.de/IAM/homepages/robertk
More information about the Dune
mailing list