Jens schrieb:
> Wie kann ich die Tempate Methoden untereinandere sich gegenseitig
> aufrufen lassen?
>
>
1 | > template<int SIZE> class TestKlasse{
|
2 | > public:
|
3 | > TestKlasse();
|
4 | > void M1();
|
5 | > void M2();
|
6 | >
|
7 | > unsigned int arr[SIZE];
|
8 | > };
|
9 | >
|
10 | > template<int SIZE>
|
11 | > void TestKlasse<SIZE>::M1(){
|
12 | > }
|
13 | >
|
14 | > template<int SIZE>
|
15 | > void TestKlasse<SIZE>::M2(){
|
16 | > M2();//?????????????????????????????????????????
|
17 | > }
|
18 | >
|
19 | > TestKlasse<100> obj1;
|
20 | > TestKlasse<50> obj2;
|
21 | >
|
falls du in M2() M1() rufen wolltest, dann geht das.
So wie geschrieben, gibt es nur einen Stack-Überlauf.
Und wie schon oben geschrieben, wenn eine der Methoden tatsächlich von
SIZE abhängt, dann gibt es die eben mehrfach und die jeweils richtige
wird gerufen.
Zu der <>-Verwirrung: die Zeit, die man in ein vernüftig gebaute
Template-Klasse investiert, kommt bei der Benutzung schnell wieder
zurück. Man kann auch den Typ der Array-Element offen lassen:
1 | template<typename T, size_t SIZE> class TestKlasse{
|
2 | public:
|
3 | TestKlasse();
|
4 | void M1();
|
5 | void M2();
|
6 |
|
7 | T arr[SIZE];
|
8 | };
|
9 |
|
10 | template<typename T, size_t SIZE>
|
11 | void TestKlasse<SIZE>::M1(){
|
12 | }
|
13 |
|
14 | template<typename T, size_t SIZE>
|
15 | void TestKlasse<SIZE>::M2() {
|
16 | M1();
|
17 | }
|
18 |
|
19 | TestKlasse<uint8_t,100> obj1;
|
20 | TestKlasse<double,50> obj2;
|