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

Struktura plików nagłówkowych

Ostatnio zmodyfikowano 2016-08-04 14:03
Autor Wiadomość
j23
» 2016-08-04 10:37:24
W pliku game.hpp zdefiniowałeś zmienną gamestate, która - jak rozumiem - ma być zmienną globalną. Zrobiłeś to źle. Daj deinicje zmiennej do jakiegoś pliku źródłowego .cpp, a w nagłówku wrzuć deklaracje: extern GameState gamestate;.
P-150554
2dpcpl
Temat założony przez niniejszego użytkownika
» 2016-08-04 12:07:17
Nie działa mi to, ale będę jeszcze kombinował na inne sposoby.
A mam takie pytanie czy można, np. pominąć pliki nagłówkowe i korzystać z samych plików .cpp? Gdzieś tutaj na forum czytałem, że jeśli wpiszemy
#include "nazwa.cpp"
 to tak jakbyśmy wkleili ten kod przed tym?

Czy to tak działa? Mogę tak zrobić? Że będą same pliki źródłowe bez nagłówkowych?

Tak jak tutaj: http://cpp0x.pl/forum/temat/​?id=2727
P-150556
Gibas11
» 2016-08-04 12:40:39
Fatalny czas kompilacji i kilka większych wad trudnych do opisania z telefonu. W każdym razie nie polecam.
P-150559
2dpcpl
Temat założony przez niniejszego użytkownika
» 2016-08-04 13:24:59
A jakiś inny sposób na rozbicie kodu? Plików nagłówkowych chyba niestety nie rozumiem, bo jeśli wszystko mam w jednym pliku to działa normalnie.

I oczywiście, mógłbym wszystko zostawić w jednym, biednym, main.cpp, ale czytałem, że lepiej sobie od samego początku rozbijać kod na większą ilość plików bo łatwiej się po nim poruszać oraz jest po prostu czytelniejszy.
P-150565
j23
» 2016-08-04 13:35:04
C/C++
//plik: Game.hpp
#ifndef Game_hpp
#define Game_hpp

enum GameState
{
    LOADING_MAIN_MENU, // 0
    MAIN_MENU // 1
};

extern GameState gamestate;

#endif /* end of include guard: Game_hpp */


C/C++
//plik Menu.cpp
#include "Menu.hpp"
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>

GameState gamestate = LOADING_MAIN_MENU;

void LoadMainMenu()
{
    sf::Font UbuntuR;
    if( UbuntuR.loadFromFile( "fonts/Ubuntu-R.ttf" ) ) std::cout << "Załadowano!";
   
    gamestate = MAIN_MENU;
}


C/C++
//plik: Menu.hpp
#ifndef Menu_hpp
#define Menu_hpp
#include "Game.hpp"

void LoadMainMenu();

#endif /* end of include guard: Menu_hpp */


C/C++
//plik: main.cpp
#include "Menu.hpp"
...
To powinno działać.
P-150566
2dpcpl
Temat założony przez niniejszego użytkownika
» 2016-08-04 13:43:39

main.cpp: In function ‘int main()’:
main.cpp:15:3: error: ‘sf’ has not been declared
   sf::RenderWindow window;
   ^
main.cpp:16:3: error: ‘window’ was not declared in this scope
   window.create(sf::VideoMode(1280,720), "test");
   ^
main.cpp:16:17: error: ‘sf’ has not been declared
   window.create(sf::VideoMode(1280,720), "test");
                                                                                 ^
main.cpp:21:5: error: ‘sf’ has not been declared
     sf::Event event; //deklaracja zmiennej o nazwie 'event' odpowiadającej za pobieranie eventów
     ^
main.cpp:22:29: error: ‘event’ was not declared in this scope
     while (window.pollEvent(event)) { //wykrywanie eventów
                             ^
main.cpp:23:25: error: ‘sf’ has not been declared
       if (event.type == sf::Event::Closed) window.close(); //zamknij okno jeśli użytkownik wywoła zamykanie okna
                         ^
main.cpp:35:10: error: ‘EXIT_SUCCESS’ was not declared in this scope
   return EXIT_SUCCESS;
          ^


Nie działa :/
P-150567
michal11
» 2016-08-04 13:48:15
Na pewno masz dobrze podpięte SFML ?
P-150568
j23
» 2016-08-04 13:48:44
W main używasz klas i metod SFML-a, więc wypadałoby dodać #include <SFML/Graphics.hpp>.
P-150569
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona