• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dołączenie klasy do wszystkich plików cpp.

Object Storage Arubacloud
0 głosów
609 wizyt
pytanie zadane 14 czerwca 2017 w C i C++ przez Mikołaj Kawczynski Dyskutant (9,160 p.)

Witam mam następujący problem w dużym uproszczeniu wygląda następująco

mian.cpp

#include "klasa1.cpp"
#include "klasa2.cpp"
#include "klasa3.cpp"

klasa1 obiket1;

void setup
{
   klasa2 obiekt2(obiket1);
   klasa3 obiket3(obiket1);
}

klasa2.cpp

#include "klasa1.cpp"

klasa2
{
klasa1 * wzkaznik_na_obiket1; 
[...]
};

I problem pojawia się taki że jak dołączę do pliku klasa2.cpp plik klasa1.cpp to jak nie jest on dołączony w innym pliku to jest ok.  Ale jak dolaczę do pliku main.cpp plik klasa1.cpp to pojawia się duplikacja definicji ale jak zostawię w pliku main.cpp a usunę z pliku klasa2.cpp to nagle klasa1 jest nieznanym typem. I tu pytanie jak to zrobić aby różne pliki .cpp rozpoznawały ten typ obiektu. Albo widziały po prostu ten obiekt bez wskaźnika. Warunek jest taki że muszą to być pliki .cpp gdyby to były pliki nagłówkowe .h/.hpp to by problemu nie było ale być nie mogą i klasy w różnych plikach muszą być.

2 odpowiedzi

0 głosów
odpowiedź 15 czerwca 2017 przez Ehlert Ekspert (212,670 p.)
wybrane 15 czerwca 2017 przez Mikołaj Kawczynski
 
Najlepsza
Jeśli wewnątrz klasy używasz wskaźnika, to możesz skorzystać z forward declaration.
komentarz 15 czerwca 2017 przez Mikołaj Kawczynski Dyskutant (9,160 p.)
Dziękuję myślałem że tak deklarować można tylko funkcje. Całe życie człowiek się uczy :) Wszystko teraz działa.
komentarz 15 czerwca 2017 przez Mikołaj Kawczynski Dyskutant (9,160 p.)

Tylko teram mam błąd przy odwoływaniu się do metod i pól klasy.

invalid use of incomplete type 'class c_zegar'

 

+2 głosów
odpowiedź 14 czerwca 2017 przez jankustosz1 Nałogowiec (35,880 p.)

http://cpp0x.pl/kursy/Kurs-C++/Dzielenie-kodu-na-kilka-plikow-zrodlowych/310

Z tego co pamiętam to nie includuje się plików cpp includuje się tylko .h, .hpp

komentarz 14 czerwca 2017 przez Szahid Pasjonat (20,930 p.)
Ja includowałem pliki cpp do pliku .h kiedy implementowałem metody klas szablonowych( taki myk żeby nie zasmiecać pliku z prototypowe klas ).
komentarz 15 czerwca 2017 przez jankustosz1 Nałogowiec (35,880 p.)
plików cpp nigdy nigdzie się nie importuje, wystarczy chyba że będzie takiej samej nazwy co plik .hpp tylko z rozszerzeniem .cpp

Albo i nawet nie musi być tej samej nazwy, tu już ktoś kto się lepiej zna powinien się wypowiedzieć.
komentarz 15 czerwca 2017 przez Szahid Pasjonat (20,930 p.)
w przypadku który opisałem import cpp nie jest konieczny ale możliwy
komentarz 15 czerwca 2017 przez j23 Mędrzec (194,920 p.)

.cpp to tylko rozszerzenie. Ważne, czym ten plik w rzeczywistości jest i jak ma być traktowany przez kompilator. To, że Twój plik, Shahid, ma rozszerzenie .cpp nie znaczy, że jest plikiem źródłowym - to po prostu plik nagłówkowy z innym niż typowe rozszerzeniem.

 

Generalnie plików źródłowych się nie załącza via #include, bo w 99% przypadków nie ma takiej potrzeby. Ten 1% to może być np. kompilacja warunkowa (ale i tak plik źródłowy załącza się w innym pliku źródłowym, nigdy w nagłówku!).

Podobne pytania

0 głosów
0 odpowiedzi 1,056 wizyt
0 głosów
1 odpowiedź 411 wizyt
pytanie zadane 12 kwietnia 2019 w PHP przez Sinq Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 765 wizyt
pytanie zadane 7 grudnia 2016 w JavaScript przez enderius Nowicjusz (240 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...