multiple definition of, previous definition was here

multiple definition of, previous definition was here
cpp_beginer
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:105
0

Hej, Mam taki plik nagłówkowy. Pomijam już fakt czy to jest dobre rozwiązanie czy nie.
Dołączam ten plik w dwóch innych plikach(.cpp) i wywołuję na tym obiekcie metody.

Kopiuj
#ifndef SHARED_OBJECTS_H_
#define SHARED_OBJECTS_H_

#include "TestFrame.h"

TestFrame testFrame;

#endif // SHARED_OBJECTS_H_

W trakcie budowania konsolidator krzyczy:

Kopiuj
Confidential multiple definition of `testFrame'
first defined here

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Szczecin
3

Nie możesz definiować zmiennej w nagłówku, bo potem pojawia się ona w każdym obiekcie kompilacji. Zadeklaruj jako extern, a definicję przenieś do jednego z plików .cpp.


MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
2

zmienna globalna w nagłówku.

Najlepiej nie używaj zmiennych globalnych.

A jak musisz, to w nagłówku umieść deklarację:

Kopiuj
extern TestFrame testFrame;

A jednym pliku cpp definicję.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
cpp_beginer
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:105
0

Wiem o tym, myślę właśnie aby dodwać odpowiednie zależności miedzy klasami.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.