Mam szablon klasy costam
i chce zrobic dyamiczną tablice obiektow tej klasy.
costam<int> *T = new costam<int>[size];
błąd:undefined reference to
costam<int>::costam()'`
Mam szablon klasy costam
i chce zrobic dyamiczną tablice obiektow tej klasy.
costam<int> *T = new costam<int>[size];
błąd:undefined reference to
costam<int>::costam()'`
brak konstruktora domyślnego.
Moje konstruktory wyglądają tak:
costam();
costam(T __x, T __y)
: index(__x)
, value(__y) {}
Zatem wydaje mi sie, ze costam::costam()
jest domyslne. Czy nie?
No a gdzie ciało tego konstruktora?
Doszedłem do tego, ze działa dla
costam()
: index(0)
, value(0) {}
Jednak nie rozumiem, dlaczego ten konstruktor nie moze byc pusty. Jeśli nie chce nic niczym inicjować.
Ale to: costam();
to nie jest pusty. To jest tylko deklaracja - nie będzie żadnego kodu (symbolu). Raczej chciałeś costam() {}
- to jest "pusta" funkcja.
Ten błąd, który dostałeś, to jest błąd linkera a nie kompilatora - kompilacja się powiodła.
costam(T index=T(), T value=T()):index(index),value(value) {}
0 masz jeden konstruktor pełniący role właściwie trzech.