Program rozbity na wiele plików źródłowych, a użycie zmiennych.
Ostatnio zmodyfikowano 2016-03-28 19:55
Rashmistrz Temat założony przez niniejszego użytkownika |
Program rozbity na wiele plików źródłowych, a użycie zmiennych. » 2016-03-27 21:58:36 Mam na przykład main.cpp, który include'uje params.hpp i match.hpp. W main.cpp tworzę globalny obiekt klasy params o nazwie parametry. Problem jest w tym, że zgłasza mi błąd podczas użycia globalnego obiektu parametry w pliku match.hpp/match.cpp. Co zrobić? Extern mi nie chce działać: extern params parametry; . :C |
|
mokrowski |
» 2016-03-27 22:18:05 Kod pokazać... nawet wyłącznie z wydzielonym błędem. |
|
carlosmay |
» 2016-03-27 22:57:20 Jeśli możesz użyj parametry w argumencie metod/funkcji, aby użyć obiektu w potrzebnym miejscu. |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2016-03-27 23:16:38 @carlosmay Za dużo z tym zachodu... tak we wszystkich funkcjach przekazywać ten sam wskaźnik. @mokrowski wpis z "chunklog.txt": 19:43 - chyba nikt mnie nie zabije za pisanie kodu w pliku nagłówkowym xd |
main.cpp
#include <windows.h>
HINSTANCE hInstance; HINSTANCE hPrevInstance; LPSTR lpCmdLine; int nCmdShow;
#include <cstring>
#include <iostream> using std::cout; using std::cin;
#include "match.hpp" #include "board.hpp" #include "logic.hpp" #include "bitcounter.hpp"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ::hInstance = hInstance; ::hPrevInstance = hPrevInstance; ::lpCmdLine = lpCmdLine; ::nCmdShow = nCmdShow; return 0; }
int main( int argc, char * argv[] ) { int plansze = 1; bool remisy_przy_dziewiatce = false; #include "params.cpp" match XOXOXO( plansze, remisy_przy_dziewiatce ); XOXOXO.start(); return 0; }
match.hpp class match { public: char player_X = 'X'; char player_O = 'O'; logic logika; match( int plansze, bool remisy_przy_dziewiatce ) { }; void start(); };
void match::start() { }
logic.hpp class match { public: char player_X = 'X'; char player_O = 'O'; logic logika; match( int plansze, bool remisy_przy_dziewiatce ) { }; void start(); };
void match::start() { }
||=== Build file: "no target" in "no project" (compiler: unknown) ===| E:\CACHE\011\XOXOXO\match.hpp|6|error: 'logic' does not name a type| ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
|
|
michal11 |
» 2016-03-28 09:58:29 Jeżeli już musisz mieć zmienną globalną to może lepiej zrobić sobie singleton ? |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2016-03-28 13:53:53 Wpis z mojego dziennika: Rany boskie... To przez kolejność include'ów |
To przez to, że występowała sama próba utworzenia obiektu danej klasy przed jej jakąkolwiek deklaracją... Ciekawy ten... Singleton. |
|
mokrowski |
» 2016-03-28 19:48:14 match.hpp i logic.hpp ten sam kod. Coś się nie pokręciło? |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2016-03-28 19:55:27 Emmm... Tak, błąd przy kopiowaniu. logic.hpp wtedy zawierał pustą klasę. |
|
« 1 » |