logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Linker error w C++ po przeniesieniu kodu z system.h do system.cpp

dyschemist 30 Gru 2007 12:35 1103 2
REKLAMA
  • #1 4639753
    dyschemist
    Poziom 1  
    Posty: 1
    Cytat:
    linked Error - undefined reference to 'konto::oprocentowanie_lokata'
    linked Error - undefined reference to 'konto::oprocentowanie_kredyt'


    gdzie

    Cytat:
    static float oprocentowanie_lokata;
    static float oprocentowanie_kredyt;


    a błąd wyskakuje w miejscu :
    Cytat:

    void konto::oprocentuj (void){
    double czas;
    czas=difftime(time(NULL),utworzenie_lokaty);
    czas=czas/3600;
    czas=czas/24;
    int dni;
    dni= (int) czas;
    lokata= (int) pow(lokata*(1+(konto::oprocentowanie_lokata/365)),dni);
    kredyt= (int) pow(kredyt*(1+(konto::oprocentowanie_kredyt/365)),dni);
    utworzenie_lokaty=time(NULL);
    utworzenie_kredytu=time(NULL);
    }


    Problem pojawił sie po wyprowadzeniu kodu z system.h do system.cpp.

    W system.cpp mamy oczywiście:
    Cytat:
    #include "system.h"


    Język oczywiście c++...

    Czy ktoś mógłby mi wyjaśnić co zrobiłem źle i jak to naprawić?
  • REKLAMA
  • #2 4641069
    radekr
    Poziom 16  
    Posty: 122
    Pomógł: 11
    Ocena: 5
    O ile dobrze pamiętam to, skoro oprocentuj jest metodą klasy konto, oraz zmienne oprocetowanie_lokata i oproentowanie_kredyt też są zmiennymi tej klasy to możesz się do nich odwoływać bez przedrostka konto, czyli o prostu:
    
    okata= (int) pow(lokata*(1+(oprocentowanie_lokata/365)),dni);
    kredyt= (int) pow(kredyt*(1+(oprocentowanie_kredyt/365)),dni);
    
  • #3 4641077
    paczek86
    Poziom 14  
    Posty: 44
    Pomógł: 11
    Ocena: 2
    dyschemist napisał:

    Język oczywiście c++...

    Czy ktoś mógłby mi wyjaśnić co zrobiłem źle i jak to naprawić?


    Najprawdopodobniej w swoim programie nie zawarłeś definicji składników statycznych. Definicje te powinieneś umieścić w pliku 'system.cpp'.
    Mają one postać
    float konto::oprocentowanie_lokata;//ewentualnie z inicjalizacją: =123
    float konto::oprocentowanie_kredyt;
REKLAMA