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

[C++]Podział projektu na kilka plików

Ostatnio zmodyfikowano 2013-11-04 19:18
Autor Wiadomość
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.
C/C++
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.
P-95251
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.
P-95252
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:
C/C++
#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:
C/C++
#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|
P-95255
SeaMonster131
» 2013-11-04 15:32:25
Umieść to w funkcji.
P-95256
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:
C/C++
//xdxdx.cpp

#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 );
}
C/C++
#include "xdxdx.cpp"
int main {
   
   
    definicja();
    sprite.setPosition( sposx, sposy );
   
}
error: 'sprite' was not declared in this scope|
P-95257
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).
P-95258
SeaMonster131
» 2013-11-04 15:54:31
» Kurs C++Dzielenie kodu na kilka plików źródłowych lekcja
To też może Ci się przydać: » Kurs C++ » Poziom 3Przekazywanie argumentów funkcji przez referencję lekcja
Oraz
Frazy, które należy wpisać w wyszukiwarkę google:
P-95259
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.
P-95289
« 1 »
  Strona 1 z 1