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

Program rozbity na wiele plików źródłowych, a użycie zmiennych.

Ostatnio zmodyfikowano 2016-03-28 19:55
Autor Wiadomość
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
P-146620
mokrowski
» 2016-03-27 22:18:05
Kod pokazać... nawet wyłącznie z wydzielonym błędem.
P-146622
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.
P-146623
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
C/C++
//przypominam ze jakosc kodu nie jest oceniana
//ten moze oslepiac... ale nie musi. xD

// C++11 / C++0x

#include <windows.h>
//globalne xd
HINSTANCE hInstance;
HINSTANCE hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;

#include <cstring> //ASCII0

#include <iostream>
using std::cout;
using std::cin;

//od projektu
#include "match.hpp"
#include "board.hpp"
#include "logic.hpp"
#include "bitcounter.hpp"
//#include "params.hpp" //not used anymore

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    //magia
    ::hInstance = hInstance;
    ::hPrevInstance = hPrevInstance;
    ::lpCmdLine = lpCmdLine;
    ::nCmdShow = nCmdShow;
    return 0;
}

//dwa mainy watafak?!
int main( int argc, char * argv[] ) // <- wszystko dla parametrow xD
{
    int plansze = 1; // inne niż 1 lub 9 niewspierane
    bool remisy_przy_dziewiatce = false;
    #include "params.cpp" // w zastepstwie za params.hpp
   
    match XOXOXO( plansze, remisy_przy_dziewiatce );
    XOXOXO.start();
    return 0; // schludny main, prawda ? ^_^
}

match.hpp
C/C++
class match
{
public:
    char player_X = 'X';
    char player_O = 'O';
    logic logika;
    match( int plansze, bool remisy_przy_dziewiatce ) { };
    void start();
    //inform
    //move //zwraca bool czy ruch został wykonany
};

void match::start()
{
   
}

logic.hpp
C/C++
class match
{
public:
    char player_X = 'X';
    char player_O = 'O';
    logic logika;
    match( int plansze, bool remisy_przy_dziewiatce ) { };
    void start();
    //inform
    //move //zwraca bool czy ruch został wykonany
};

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)) ===|
P-146624
michal11
» 2016-03-28 09:58:29
Jeżeli już musisz mieć zmienną globalną to może lepiej zrobić sobie singleton ?
P-146632
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.
P-146637
mokrowski
» 2016-03-28 19:48:14
match.hpp i logic.hpp ten sam kod. Coś się nie pokręciło?
P-146655
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2016-03-28 19:55:27
Coś się nie pokręciło?
Emmm... Tak, błąd przy kopiowaniu.
 logic.hpp wtedy zawierał pustą klasę.
P-146657
« 1 »
  Strona 1 z 1