DzieckoBezZycia Temat założony przez niniejszego użytkownika |
[C++]Podział projektu na kilka plików » 2013-11-04 13:01:10 Siema! Chciałbym, podzielić mój program na kilka plików (tzn. .h i .cpp), ponieważ mam np. wiele kodu definiującego, np. sf::Texture textureA; if( !textureA.loadFromFile( "textureA.jpg" ) ) return EXIT_FAILURE;
sf::Sprite sprite( textureA ); Czy moglibyście mi pomóc z tym? Tzn. czy stworzyc .h czy .cpp i jak zrobić, żeby to działało? Bo próbowałem, ale najczęśćiej miałem jakieś błędy typu, że nie zna takiego "typu"(czy czegoś podobnego) jak np. Sprite, chociaż dołączałem do linkera itd. Z góry dziękuje. PS:Tworzę w C::B. |
|
den93 |
» 2013-11-04 14:05:21 najczęśćiej miałem jakieś błędy typu, że nie zna takiego "typu"(czy czegoś podobnego) jak np. Sprite |
Może nie dołączyłeś nagłówków SFML? Graphics.hpp, Graphics/Sprite.hpp czy co tam chcesz. chociaż dołączałem do linkera |
No ale błędy wywala kompilator a nie linker, huh? Ogólnie w plikach *.h umieszcza się makra, deklaracje np. funkcji, zmiennych, (klasy, szablony itd.), a w *.cpp definicje tego wszystkiego. Może podaj więcej info, czy wrzuć do neta swój projekt (tzn. tylko pliki źródłowe) i zapodaj linka, to może będę w stanie ci lepiej pomóc. Jeśli nie, to wygoogluj sobie jak się takie wieloplikowe projekty robi. |
|
DzieckoBezZycia Temat założony przez niniejszego użytkownika |
» 2013-11-04 15:31:43 Stworzyłem sb xdxdx.cpp Dodałem do aktywnego projektu w C::B i teraz mam w nim taki kod: #include <SFML/Audio.hpp> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include <SFML/Window.hpp>
sf::Texture textureA; if( !textureA.loadFromFile( "textureA.jpg" ) ) return EXIT_FAILURE;
sf::Sprite sprite( textureA ); i mam blad error: expected unqualified-id before 'if'|
Usuwając if(choc tego bym nie chcial) robiąc coś takiego: #include <SFML/Audio.hpp> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include <SFML/Window.hpp>
sf::Texture textureA; textureA.loadFromFile( "textureA.jpg" ) sf::Sprite sprite( textureA ); mam taki błąd: error: 'textureA' does not name a type|
|
|
SeaMonster131 |
» 2013-11-04 15:32:25 Umieść to w funkcji. |
|
DzieckoBezZycia Temat założony przez niniejszego użytkownika |
» 2013-11-04 15:39:55 Umieszczając w funkcji xdxdx.cpp nie zamiera błędów, jednak w main.cpp w int main mam takie błędy, jakby nie były zdefiniowane np. sprite:
#include <SFML/Audio.hpp> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include <SFML/Window.hpp>
void definicja() { sf::Texture textureA; textureA.loadFromFile( "textureA.jpg" ); sf::Sprite sprite( textureA ); }
#include "xdxdx.cpp" int main { definicja(); sprite.setPosition( sposx, sposy ); }
error: 'sprite' was not declared in this scope|
|
|
den93 |
» 2013-11-04 15:46:29 Obiekt 'sprite' istnieje tylko w funkcji 'definicja' i powinieneś się do niego odwoływać w jej obrębie. To znaczy, że nie możesz go używać w funkcji 'main' (nie ma go w tej przestrzeni nazw). |
|
SeaMonster131 |
» 2013-11-04 15:54:31 |
|
polkom21 |
» 2013-11-04 19:18:45 A ja to tak serio pierwszy raz widzę coś takiego: #include "xdxdx.cpp" . Z tego co ja się uczyłem to dołącza się tylko pliki nagłowkowe (czyli *.h i *.hpp). Jeżeli nie jesteś na prawdę początkującym tylko ogarniasz co z czym się je to zabierz się za klasy. Na prawdę bardzo pomocne są klasy i tak na prawdę niezbyt trudne do ogarnięcia. Wtedy nie będziesz miał problemów z dzieleniem programu na pliki tylko wrzucisz sobie w każdy plik klasę i zachowujesz porządek w kodzie. |
|
« 1 » |