Zadeklarowałem sobie klasę Wektor oraz klasę UkladRownanLiniowych, której składowymi są obiekty klasy Wektor. Jak widać chcę wybrać za Typ double ( definicje obiektów wew klasy UkladRownanLiniowych).
W funkcji main tworzę sobie obiekt klasy UkladRownanLiniowych i teraz chciałbym wywoływać kolejne funkcje. Przy każdym takim wywołaniu otrzymuję błędy od kompilatora :
Dla ( cin>>A ) :
//main.cpp:(.text+0x34): undefined reference to `std::basic_istream<char, std::char_traits<char> >& operator>><double>(std::basic_istream<char, std::char_traits<char> >&, Macierz<double>&)'
//
**
Po usunięciu klasy UkladRownanLiniowych , czyli dla samej klasy Wektor otrzymuje ten sam problem ..
Jeśli chodzi o deklaracje wszystko jest w dobrej kolejności, bo bez szablonów ten sam program działa**
template <typename Typ>
class Wektor {
public:
Typ wek[10];
};
// Tworzę jakieś obiekty
Wektor<double> V;
Wektor<double> blad;
Wektor<double> X;
// w definicji kazdej funkcji ktorej argumentami są obiekty klasy Wektor dokonuję takich operacji :
template <typename Typ>
std::istream & operator >> (std::istream & StrmWe, Wektor<Typ> & Wek){
if (!Wczytaj_OkreslonyZnak(StrmWe,"(" )) return StrmWe;
if(!Wczytaj_N_1_Par_Liczba_OkreslonyZnak(StrmWe,Wek)) return StrmWe;
Wczytaj_Liczbe_OkreslonyZnak(StrmWe,Wek[ROZMIAR-1],")");
return StrmWe;
}
}
// wywołanie w programie jakiejs funkcji , powiedzmy wew main() :
cin>>V;