[Dune] Frage zu template Sache.

Christian Engwer christi at uni-hd.de
Wed Jun 1 11:11:33 CEST 2005


On Tue, May 31, 2005 at 07:58:26PM +0200, Robert Kloefkorn wrote:
> ich sehe den Fehler in der angehängten Datei nicht. Irgendwie war ich
> schon der Meinung, dass das unser Dune Schnittstellendesign ist.
> Komischerweise compipliert es bei mir grad nicht. WEiss jemand warum?

Das liegt an der Reihenfolge in der die Klassen initalisiert
werden. Man kann das ganze sogar noch weiter runterkochen und behält
trotzdem den gleichen Fehlern:

1  template <int d, int w, template <int,int> class GridImp> 
2  struct Grid 
3  {
4    typedef typename GridImp<d,w>::type type;
5  };
6  
7  template <int d, int w>
8  class MyGrid : public Grid <d,w,MyGrid> 
9  {
11 public:
12   typedef int type;
13 };
14 
15 int main () 
16 {
17   MyGrid<2,2> g;
18   return 0;
19 }


Du willst MyGrid initialisieren. Es werden die Zeilen 7 und 8
gelesen. Um MyGrid ,,basteln'' zu können bracht der Compiler erstmal
Grid. D.h. es wird wird Zeile 1-5 gebraucht, dabei stolpert der
Compiler über das typedef in Zeile 4, da die Klasse GridImp (==MyGrid)
zu diesem Zeitpunkt ja noch garnicht bekannt ist. Ein klassischer
Deadlock oder das Henne-Ei-Problem.

Tschüß Christian




More information about the Dune mailing list