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

Inline, oraz plik nagłówkowy

Ostatnio zmodyfikowano 2015-11-03 18:42
Autor Wiadomość
Masmix
Temat założony przez niniejszego użytkownika
Inline, oraz plik nagłówkowy
» 2015-11-03 16:08:02
Witam,

borykam się z problemem jakim jest inline, a mianowicie posiadam 3 pliki w projekcie: main.cpp, funkcje.cpp, oraz Naglowek.hpp.
W pliku main.cpp posiadam część programu jakim jest dodawanie:

 int main {
    double a,b;
    cout << "Podaj pierwsza liczbe" << endl;
    cin >> a;
    cout << "Podaj druga liczbe " << endl;
    cin >> b;
    cout << "Wynik dodawania " << a << " i " << b << " to " << dodawanie(a,b) << endl; // Tutaj wyskakuje ten error
    }

W pliku funkcje.cpp posiadam funkcję dodawanie :

inline double dodawanie(double a, double b)
    {
    return a+b;
    }
A w pliku Naglowek.hpp wypisaną funkcję dodawania :

inline double dodawanie(double a, double b)

I przechodząc do sedna, w trakcie kompilacji pojawia się błąd:

"Undefined reference to 'dodawanie(double, double)' used but never defined [enabled by default].

Jednak gdy usunę w drugim i trzecim pliku inline to wszystko działa jak natura chciała. Zdążyłem się domyślić, że trzeba coś zdefiniować, ale niestety nie mam pojęcia co, gdzie i jak. Czy dobrze się domyślam? Jeżeli tak to bardzo proszę powiedzieć jak mam to zrobić.
Z góry dziękuję !
P-139550
1aam2am1
» 2015-11-03 16:40:50
Funkcje inline powinny być w pliku .h według mojej wiedzy bo pliki cpp są kompilowane a dopiero potem linkowane.
Funkcje inline są w całości w miejscu wywołania więc nie mogą być linkowane. Więc występuje błąd.
P-139552
Masmix
Temat założony przez niniejszego użytkownika
» 2015-11-03 17:03:58
Dobrze zrozumiałem, aby przenieść funkcję dodawanie z pliku .cpp, do pliku .h ?
P-139553
pekfos
» 2015-11-03 18:42:50
Dobrze zrozumiałem, aby przenieść funkcję dodawanie z pliku .cpp, do pliku .h ?
Tak. Lepiej było poczekać na odpowiedź ponad 1.5 godziny zamiast samemu sprawdzić..?
P-139562
« 1 »
  Strona 1 z 1