Problem z łączeniem plików
Ostatnio zmodyfikowano 2016-11-15 17:48
Lich555 Temat założony przez niniejszego użytkownika |
Problem z łączeniem plików » 2016-11-13 23:40:19 Witam. Program daje oczekiwany rezultat. Pragnę to od razu napisać. Ale. Przy kompilacji pokazuje takiego warninga w pliku nagłówkowym: inline function 'void spiew()' used but never defined plik główny .cpp: #include <iostream> #include "klasa1.h"
using namespace std;
int balkon = 77; inline void spiew();
int main() { opera Lohengrin; Lohengrin.balkon = 6; Lohengrin.funkcja(); spiew(); }
inline void spiew() { cout << "Zwykla funkcja spiew (nie majaca nic wspolnego z klasa)\n"; }
plik źródłowy .cpp: #include <iostream> #include "klasa1.h"
using namespace std;
void opera::funkcja() { cout << "balkon (skladnik klasy) = " << balkon << endl; cout << "balkon (zmienna globalna) = " <<::balkon << endl; char balkon = 'M'; cout << "\nPo definicji zmiennej lokalnej\n"; cout << "balkon (zmienna lokalna) = " << balkon << endl; cout << "balkon (skladnik klasy) = " << opera::balkon << endl; cout << "balkon (zmienna globalna) = " <<::balkon << endl; ::spiew(); int spiew = 7; cout << "Po zasloneciu da sie wywolac funkcje spiew tylko tak\n"; ::spiew(); }
plik nagłówkowy .h: #ifndef KLASA1_H_INCLUDED #define KLASA1_H_INCLUDED
extern int balkon; extern inline void spiew();
class opera { public: int n; float balkon; void funkcja(); void spiew(); };
#endif
O Boże, ale spam :P |
|
carlosmay |
» 2016-11-14 01:10:54 class opera { public: int n; float balkon; void funkcja(); void spiew(); }; |
|
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-11-14 23:28:50 O kurcze. Nie wiem co myślałem pisząc to :P Ale akurat nie tam wywalało mi błąd. Błąd był przy deklaracji funkcji inline w pliku nagłówkowym. Usunąłem ją. Określę, co ja chcę zrobić. W pliku źródłowym chcę wywołać funkcję spiew zdefiniowaną w main. plik źródłowy: #include <iostream> #include "klasa1.h"
using namespace std;
void opera::funkcja() { cout << "balkon (skladnik klasy) = " << balkon << endl; cout << "balkon (zmienna globalna) = " <<::balkon << endl; char balkon = 'M'; cout << "\nPo definicji zmiennej lokalnej\n"; cout << "balkon (zmienna lokalna) = " << balkon << endl; cout << "balkon (skladnik klasy) = " << opera::balkon << endl; cout << "balkon (zmienna globalna) = " <<::balkon << endl; ::spiew(); int spiew = 7; cout << "Po zasloneciu da sie wywolac funkcje spiew tylko tak\n"; ::spiew(); cout << "Zmienna spiew = " << spiew; }
@Edit Poszperałem, poczytałem i jak usunąłem inline to jest dobrze. Ale ciągle pozostaje problem z tą zmienną spiew. Jak, na końcu tego kodu, wywołać samą zmienną? Jak opisałem, jest tutaj taki rezultat: 7Zwykla funkcja spiew( nie majaca nic wspolnego z klasa ) |
|
karambaHZP |
» 2016-11-15 05:28:50 Lohengrin.funkcja(); spiew();
|
? |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-11-15 17:48:42 Dobra, jaki ja jestem głupi... Dzięki za pomoc. |
|
« 1 » |