[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