(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