Struktura plików nagłówkowych
Ostatnio zmodyfikowano 2016-08-04 14:03
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;. |
|
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 |
|
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. |
|
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. |
|
j23 |
» 2016-08-04 13:35:04 #ifndef Game_hpp #define Game_hpp
enum GameState { LOADING_MAIN_MENU, MAIN_MENU };
extern GameState gamestate;
#endif
#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; }
#ifndef Menu_hpp #define Menu_hpp #include "Game.hpp"
void LoadMainMenu();
#endif
To powinno działać. |
|
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 :/ |
|
michal11 |
» 2016-08-04 13:48:15 Na pewno masz dobrze podpięte SFML ? |
|
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>.
|
|
1 « 2 » 3 |