unresolved external symbol
Ostatnio zmodyfikowano 2014-02-02 12:14
GarryMoveOut Temat założony przez niniejszego użytkownika |
unresolved external symbol » 2014-02-01 19:40:50 Mam problem z programem, nie wiem co jest nie tak i nie potrafię naprawić problemu. error LNK2001: unresolved external symbol "protected: static int Schowek<float>::ilosc_schowkow" (?ilosc_schowkow@?$Schowek@M@@1HA) error LNK2001: unresolved external symbol "protected: static int Schowek<int>::ilosc_schowkow" (?ilosc_schowkow@?$Schowek@H@@1HA) #include <iostream> #include <string> #include <istream> #include <sstream> #include <fstream> #include <stdio.h> #include <conio.h>
using namespace std;
class Grupa
{ protected: static int ilosc; Grupa() { ilosc++; } public: int ile() { return ilosc; } };
int Grupa::ilosc = 0; template < class T >
class Schowek : public Grupa { protected: T sejf; static int ilosc_schowkow; public: Schowek() : sejf( 0 ) { ilosc_schowkow++; } void schowaj( T x ) { sejf = x; } T oddaj() { return sejf; } int ileSchowkow() { return ilosc_schowkow; } }; template < class T > class Sekret : protected Schowek < T > { private: string wskazowka; public: Sekret( string wsk ) : wskazowka( wsk ) { } void ukryj( T x ) { Schowek < T >::sejf = x; } T odkryj() { return Schowek < T >::sejf; } string dajWskazowke() { return wskazowka; } }; template < class T1, class T2 > class Sekrety : public Schowek < T2 > { private: T1 schowek; public: void ukryj( T1 x ) { schowek = x; } T1 odkryj() { return schowek; } }; template < class T > class Bankier : protected Schowek < float > { private: float prowizja; T depozyt; public: Bankier() : prowizja( 0 ) { } void zdeponowanieDepozytu( T k ) { depozyt = k; sejf = 0.95 * k; prowizja += 0.05 * k; } float wyplataRownowaznosci() { prowizja += 0.05 * sejf; float tmp = sejf * 0.95; sejf = 0; return tmp; } T odbiorDepozytu() { prowizja += depozyt * 0.05; return depozyt; } float rachunek() { return prowizja; } }; template <> class Schowek < long > : public Grupa { protected: int sejf_int; long sejf_long; public: long oddajLong() { return sejf_long; } int oddaj() { return sejf_int; } void schowaj( long x ) { sejf_int = x; sejf_long = x; } };
template <> class Bankier < long > : private Schowek < long > { private: double prowizja; long depozyt; public: Bankier() : prowizja( 0 ) { } void zdeponowanieDepozytu( long k ) { depozyt = k; sejf_long = 0.95 * k; prowizja += 0.05 * k; } double wyplataRownowaznosci() { prowizja += 0.05 * sejf_long; double tmp = sejf_long * 0.95; sejf_long = 0; return tmp; } long odbiorDepozytu() { prowizja += depozyt * 0.05; return depozyt; } double rachunek() { return prowizja; } };
class Portfel : public Schowek < float > { private: float rozmiar; public: Portfel( float max ) : rozmiar( max ) { } void schowaj( float x ) { sejf =(( x <= rozmiar ) ? x : sejf ); } };
int main() { Portfel p( 200.43 ); p.schowaj( 300 ); p.schowaj( 100.32 ); cout << p.oddaj() << endl; cout << p.ile() << endl; Bankier < int > b; b.zdeponowanieDepozytu( 1000 ); cout << b.wyplataRownowaznosci() << endl; cout << b.odbiorDepozytu() << endl; cout << b.rachunek() << endl; Sekret < int > sek( "Tajne" ); sek.ukryj( 2000 ); cout << sek.dajWskazowke() << endl; cout << sek.odkryj() << endl; Sekrety < string, int > seky; seky.ukryj( "Wiadomosc" ); seky.schowaj( 5000 ); cout << seky.odkryj() << endl; cout << seky.oddaj() << endl; cout << seky.ile() << endl; Schowek < long > sch; sch.schowaj( 1000000000000000 ); cout << sch.oddaj() << endl; cout << sch.oddajLong() << endl; cout << sch.ile() << endl; Bankier < long > bl; bl.zdeponowanieDepozytu( 1000000000000000 ); cout << bl.wyplataRownowaznosci() << endl; cout << bl.odbiorDepozytu() << endl; cout << bl.rachunek() << endl; return 0; }
|
|
pekfos |
» 2014-02-02 12:14:15 Statyczne składowe musisz zdefiniować. |
|
« 1 » |