Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

unresolved external symbol

Ostatnio zmodyfikowano 2014-02-02 12:14
Autor Wiadomość
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)

C/C++
#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;
    //cout << b.ile() << endl;
    Sekret < int > sek( "Tajne" );
    sek.ukryj( 2000 );
    cout << sek.dajWskazowke() << endl;
    cout << sek.odkryj() << endl;
    //cout << sek.ile() << 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;
    //cout << bl.ile() << endl;
    return 0;
}
P-103779
pekfos
» 2014-02-02 12:14:15
Statyczne składowe musisz zdefiniować.
P-103846
« 1 »
  Strona 1 z 1