(C++) Podzielenie kodu na kilka plików źródłowych

0

Mam problem. Pisząc platformówkę, spotkałem się z błędem: "one or more multiply definied symbols found".
Mam taką strukturę plików:
Source.cpp
initGame.h
game.cpp
Wg. mnie nie ma co wstawiać kodu, albowiem błąd nie jest w kodzie. Błąd występuje
TYLKO kiedy w projekcie jest "game.cpp". Doczytałem się, że kompilator/linker bierze ten plik za drugi plik z funkcją main
i dlatego wyrzuca błąd, tyle że w game.cpp mam tylko:

int Klasa::Funkcja()
{
//kod
}
0

Jak nie chcesz podać kod to jesteś na niewłaściwym forum, potrzebujesz forum wróżbitów.
Spróbuję jednak powróżyć z fusów.
Fusy wskazują że masz w initGame.h zdefiniowaną jakąś zmienną oraz dołączasz ten plik do dwóch plików cpp

0

Oczywiście, kod jest dopiero zaczęty, pisałem tylko chwilę i próbowałem włączyć to co napisałem i sprawdzić czy Eventy działają.
Kod:

//initGame.h
#ifndef initGame_h
#define initGame_h
#include <SFML/Graphics.hpp>

sf::RenderWindow wnd(sf::VideoMode(800,600,32),"..."); //nie wiedziałem, gzie to wstawić, może zrobić namespace?

class Menu
{
private:
    sf::Event mevent;
public:
    bool isMenu;
    Menu() { isMenu=true; }
    void onMenuEvents();
};

class Game
{
private:
    sf::Event event1;
public:
    Game() {  }
    void onGameEvents();
};
#endif

Next:

#include "initGame.h"

void Menu::onMenuEvents()
{
    while(wnd.pollEvent(mevent))
    {
        if(mevent.type==sf::Event::Closed)
            wnd.close();
    }
}

void Game::onGameEvents()
{
    while(wnd.pollEvent(event1))
    {
        if(event1.type==sf::Event::Closed)
            wnd.close();
    }
}

Next

#include "initGame.h"

Menu menu;
Game game;

int main()
{
    while(wnd.isOpen())//Menu
    {
        menu.onMenuEvents();
        while(menu.isMenu=false)//gra
        {
            game.onGameEvents();
            wnd.display();
        }
        wnd.display();
    }
    return 0;
}
1

w initGame.h zostawiasz tylko: extern sf::RenderWindow wnd;
zaś: sf::RenderWindow wnd(sf::VideoMode(800,600,32),"..."); przenosisz do jednego z cpp

0

Dobra, teraz działa. Dzięki za pomoc.

0

Zapoznaj się z koncepcją singleton'a
Zmienne globalne to zło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0