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

Klasy a plik nagłówkowy

Ostatnio zmodyfikowano 2009-08-28 00:15
Autor Wiadomość
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:
C/C++
//plik klasy.hpp
#ifndef klasy_hpp
#define klasy_hpp
#include <iostream>
#include <conio.h>
using namespace std;

class EksperymentCL;
int TwojaPublicznaFunkcja();
#endif

// plik klasy.cpp
#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 )
{ }

// plik klasy_main.cpp
#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 ); //tutaj wyskakuje błąd
    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?
P-9920
DejaVu
» 2009-08-27 23:20:38
C/C++
class EksperymentCL
{
public:
    int ma, mb;
    int TwojaPublicznaFunkcja();
    EksperymentCL( int a, int b );
};
Powyższy kod musi być w pliku nagłówkowym (*.hpp)
P-9922
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.
P-9923
DejaVu
» 2009-08-28 00:15:48
Tematy rozwiązane się zamyka samemu, wiesz? :)
P-9924
« 1 »
  Strona 1 z 1