[C++] Kompilator wykrywa zduplikowaną definicję klasy w miejscu której jej nie ma.
Ostatnio zmodyfikowano 2018-03-24 20:29
twoxu Temat założony przez niniejszego użytkownika |
[C++] Kompilator wykrywa zduplikowaną definicję klasy w miejscu której jej nie ma. » 2018-03-24 20:03:19 Witam. Kompilator wykrywa mi zduplikowaną definicję mojej klasy w pliku Transformable.hpp pochodzącym z biblioteki SFML. Jak nietrudno się domyślić, wcale jej tam nie ma, lecz kompilator twierdzi inaczej. Oto plik z definicją klasy: #ifndef ACTOR_DEFINITIONS_H_INCLUDED #define ACTOR_DEFINITIONS_H_INCLUDED
class Actor { public: int index; int posx; int posy; sf::Sprite sprite; sf::FloatRect col; }; std::vector < Actor > genericActors;
Actor createActor( int posx, int posy, sf::Sprite sprite );
#endif
Funkcja createActor jest zdefiniowana w innym pliku .cpp. ||=== Build: Debug in ProjektRPG (compiler: GNU GCC Compiler) ===| C:\xxx\main.cpp||In function 'int main()':| C:\xxx\main.cpp|112|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]| obj\Debug\main.o||In function `Transformable':| C:\xxx\..\SFML-2.4.1-windows-gcc-4.9.2-tdm-32-bit\SFML-2.4.1\include\SFML\Graphics\Transformable.hpp|41|multiple definition of `genericActors'| obj\Debug\actors.o:C:\xxx\actor_definitions.h|4|first defined here| ||error: ld returned 1 exit status| ||=== Build failed: 3 error(s), 1 warning(s) (0 minute(s), 2 second(s)) ===|
|
|
pekfos |
» 2018-03-24 20:29:57 Nie definicję klasy, tylko zmiennej. I nie 'nie ma', bo jest. Wstawiłeś ją do nagłówka, więc będzie w każdym pliku do którego to dołączysz. Jeśli koniecznie musisz mieć zmienną globalną, zadeklaruj ją w nagłówku i zdefiniuj w jednym z plików źródłowych. extern std::vector < Actor > genericActors;
|
|
« 1 » |