Klasy a plik nagłówkowy
Ostatnio zmodyfikowano 2009-08-28 00:15
SideC Temat założony przez niniejszego użytkownika |
Klasy a plik nagłówkowy » 2009-08-27 22:55:25 Nie mogę skompilować takiego projektu: #ifndef klasy_hpp #define klasy_hpp #include <iostream> #include <conio.h> using namespace std;
class EksperymentCL; int TwojaPublicznaFunkcja(); #endif
#include "klasy.hpp"
class EksperymentCL { public: int ma, mb; int TwojaPublicznaFunkcja(); EksperymentCL( int a, int b ); };
int EksperymentCL::TwojaPublicznaFunkcja() { return(( ma + mb ) * 2 ); }
EksperymentCL::EksperymentCL( int a, int b ) : ma( a ) , mb( b ) { }
#include "klasy.hpp"
int main() { int a = 0, b = 0; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "Podaj druga liczbe: "; cin >> b; EksperymentCL zmienna( a, b ); cout << "Wynik: " << zmienna.TwojaPublicznaFunkcja() << endl; cout << "a: " << zmienna.ma << " b: " << zmienna.mb << endl; getch(); return( 0 ); }
Błąd kompilacji: variable `EksperymentCL zmienna' has initializer but incomplete type
Jeżeli wszystko jest w jednym pliku, program się kompiluje i działa. Co nie tak jest w pliku nagłówkowym, bo innej przyczyny nie potrafię dostrzec? |
|
DejaVu |
» 2009-08-27 23:20:38 class EksperymentCL { public: int ma, mb; int TwojaPublicznaFunkcja(); EksperymentCL( int a, int b ); }; Powyższy kod musi być w pliku nagłówkowym (*.hpp) |
|
SideC Temat założony przez niniejszego użytkownika |
» 2009-08-27 23:33:59 Dzięki. Trochę to niszczy, wydawałoby się, przejrzysty układ, ale jest logiczne. Skąd bowiem kompilator ma wiedzieć, czy i gdzie jest konstruktor. |
|
DejaVu |
» 2009-08-28 00:15:48 Tematy rozwiązane się zamyka samemu, wiesz? :) |
|
« 1 » |