Mam plik nagłowkowy main.h zawierający klasę , deklaruje obiekt tej klasy w pliku main.cpp.
Obiekt ma być zmienną globalną tak by inne pliki mogły z niego korzystać"
main.h
// Nagłowek zawierający klase
#ifndef _MAIN_H_
#define _MAIN_H_
struct PERSON
{
int age;
std::string name;
};
#endif
// Drugi plik
main.cpp
PERSON Employ;
teraz chciałbym w innym pliku Dispaly.cpp go wyświetlic.
// trzeci plik
Dispaly.cpp
#include <main.h>; // Dlaczego musze załączac nagłowek
extern PERSON Employ;
void Show()
{
std::cout<<age<<"\n";
}
Dlaczego muszę załączać nagłówek main.h w Display.cpp skoro extern wskazuje , że ta deklaracja nie jest fizyczna lecz jest zaimportowana z main.cpp ?
Czy dlatego , że jest to typ danej zdefiniowanej przeze mnie i jest ten typ zdefiniowany w main.h?
Pytam się , bo gdy zakomentuje ( //#include <main.h>;) linijkę #include <main.h>; to kompilator VC nie krzyczy, że PERSON Employ; jest niezadeklarowana, tylko krzyczy, że pominąłem znak ';' przed identyfikatorem Employ !
"erroro C2146: syntax error: missing ';' before identifier 'Emplo' "foo
dlaczego tak dziwny kominikat?