[C++]Kompilacja programu składającego się z kilku plików.
Ostatnio zmodyfikowano 2014-06-24 23:50
Harrel Temat założony przez niniejszego użytkownika |
[C++]Kompilacja programu składającego się z kilku plików. » 2014-06-24 20:49:57 Witam, mam problem z kompilacją kilku plików. Wszystkie źródła podają, że w pliku głównym 'main.cpp' powinno dołączać się jedynie plik nagłówkowy (w moim przypadku 'deck.hpp'(czy pliki z rozsz. *.h i *.hpp różnią się w większym stopniu?)). Jednak dopóki nie dołączę pliku źródłowego ('deck.cpp') kompilator wyrzuca błąd - "undefined reference to 'deck::deck()'" - a właściwie to kilka takich samych błędów, tylko dotyczących innych metod używanych na klasie 'deck'. Myślę, że kopiowanie całego pliku 'main.cpp' nie ma sensu więc wklejam tylko jego urywek. #include <iostream> #include <conio.h> #include "deck.hpp"
#include "cards.hpp" #include "cards.cpp"
using namespace std;
int main() { deck talia; return 0; }
#ifndef DECK_HPP_ #define DECK_HPP_ #include "cards.hpp"
class deck { private: cards card[ 52 ]; public: deck(); void shuffle(); void get_in_order();; void show() const; deck operator =( deck & s ); };
#endif
#include "deck.hpp" #include "cards.hpp"
#include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
deck deck::operator =( deck & s ) { for( int x = 0; x < 52; x++ ) { card[ x ] = s.card[ x ]; } return * this; } deck::deck() { int amount = 0; for( int x = 1; x < 5; x++ ) { for( int y = 1; y < 14; y++ ) { cards temp = cards( y, x ); card[ amount ] = temp; amount++; } } } void deck::show() const { for( int x = 0; x < 52; x++ ) { cout << card[ x ] << endl; } }
void deck::shuffle() { srand( time( NULL ) ); cards card_copy[ 52 ]; for( int x = 0; x < 52; x++ ) { card_copy[ x ] = card[ x ]; card[ x ] = 0; } int amount = 0; while( amount < 52 ) { int los = rand() % 52; if( card[ los ] == 0 ) { card[ los ] = card_copy[ amount ]; amount++; } } } void deck::get_in_order() { deck temp; ( * this ) = temp; }
Jeśli to ma jakieś znaczenie to używam Code::Blocks 12.11, a pliki te oczywiście zostały utworzone jako jeden spójny projekt. |
|
DejaVu |
» 2014-06-24 22:11:38 Pliki *.cpp nie powinny być include-owane. One powinny zostać dodane do projektu (analogicznie jak w projekcie jest plik main.cpp). |
|
Harrel Temat założony przez niniejszego użytkownika |
» 2014-06-24 22:25:24 Wszystkie pliki *.cpp są dodane do projektu, a mimo to jedynie zincludowanie ich zapewnia poprawną kompilację programu. Gdy wcześniej tworzyłem inny projekt udało mi się go poprawnie skompilować, nie miał on jednak tylu plików jak ten z którym mam problem (posiadał tylko 3 pliki - main.cpp, source.cpp, headers.cpp). Więc może w tym sęk? Głowie się już nad tym dobre kilka godzin i szukam rozwiązania - niestety bez skutku. Z góry dziękuję za pomoc. |
|
Harrel Temat założony przez niniejszego użytkownika |
» 2014-06-24 23:50:46 Dobra już wszystko bangla. Wystarczyło zaznaczyć we właściwościach plików źródłowych opcje 'debug' i 'release', co pewnie oznaczało to dodanie do projektu o którym mówił DejaVu. Dzięki i sorki za zamieszanie. Zamykam. |
|
« 1 » |