Styl nagłówki

0

witam. jaki styl nagłówków w c++ uważacie za najwłaściwszy?
1.
plik h - wszystkie używane nagłówki
plik cpp - tylko #include "plik.h" gdzie jest wszystko
2.
plik h - tylko nagłówki biblioteki standardowej (<>) + rzeczy lokalne potrzebne do prototypów funkcji
plik cpp - reszta potrzebnych.
3.
plik h - tylko te potrzebne dla prototypów
plik cpp - wszystko powtórzone
4.
plik h - wszystko
plik cpp - wszystko (powtórzone)

dodatkowo: namespace.
jak mam w pliku h jako argument cos z std np funkcja(list &b).
pisać w .h using namespace std? wydaje mi się że takie przenikanie namespace do cpp jest trochę zaciemniające.
albo, pisać w h argumenty z std:: na początku, a using namespace dopiero w cpp?
najlepszym rozwiązaniem byłoby wyłączenie namespace na dany obszar. cos ja

using namespace std {
kod
}

ale tak się chyba nie da.

0

W plikach nagłówkowych C++ powinno się używać std::, aby nie ingerować we wszystkie pliki, gdzie zostanie dany nagłówek dołączony.

plik hpp - nagłówki, rzeczy lokalne potrzebne do prototypów funkcji
plik cpp - funkcje, itp.

Plik hpp:

#include <iostream>
int fun();

class A
{
public:
A();
protected:
std::string asdfghjkl;
};

Plik cxx:

#incclude "plik.hpp"

using namespace std;

int fun()
{
cout << "a";
}

A::A()
{
asdfghjkl = "asdf";
}
0

Ale zaraz, skoro w headerach mają być rzeczy potrzebne do prototypów funkcji, to po kiego w przykładzie dołączyłeś <iostream>, skoro nie jest potrzebny? Sam sobie przeczysz.

0

najlepiej to używać precompiled headers, żeby dołączyć wszystko zewnętrzne (#include <>)

i w projekcie zająć się tylko wewnętrznymi rzeczami #include "" tam gdzie to potrzebne, zakładając, że rzeczy zewnętrzne będą widoczne wszędzie (bo w końcu wymusza to #include "stdafx.h" na początku każdego *.cpp)

prościej, a i czas kompilacji o ile krótszy

0
Fanael napisał(a)

Ale zaraz, skoro w headerach mają być rzeczy potrzebne do prototypów funkcji, to po kiego w przykładzie dołączyłeś <iostream>, skoro nie jest potrzebny? Sam sobie przeczysz.

Fakt, za duży rozpęd ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0