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

[C++] Kompilator wykrywa zduplikowaną definicję klasy w miejscu której jej nie ma.

Ostatnio zmodyfikowano 2018-03-24 20:29
Autor Wiadomość
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:
C/C++
#ifndef ACTOR_DEFINITIONS_H_INCLUDED
#define ACTOR_DEFINITIONS_H_INCLUDED
//ACTOR DEFINITIONS
class Actor
{
public:
    int index;
    int posx;
    int posy;
    sf::Sprite sprite;
    sf::FloatRect col;
};
std::vector < Actor > genericActors;



//FUNCTIONS
Actor createActor( int posx, int posy, sf::Sprite sprite );

#endif // ACTOR_DEFINITIONS_H_INCLUDED
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)) ===|
P-170224
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.
C/C++
extern std::vector < Actor > genericActors;
P-170226
« 1 »
  Strona 1 z 1