2011-10-27 14 views
8

Nie wiem, dlaczego to doprowadza mnie do szału, ale tak jest. Mam zdefiniowaną funkcję i zadeklarowałem forward w main.Zewnętrzna funkcja statyczna w C++

static void myFunc(int x); 

static void myFunc(int x) 
{ 
    //do stuff 
} 

main() 

Chcę użyć myFunc (int x) w innej klasie. Więc myślę, że wszystko, co muszę zrobić, to extern static void myFunc (int x) wewnątrz nagłówka klasy, a następnie po prostu wywołać go tam, gdzie muszę w definicji klasy, ale to nie zadziała.

Co robię źle?

Dzięki

Odpowiedz

15

Nie można używać extern i static razem są wzajemnie się wykluczają.

static oznacza wewnętrzny Powiązanie
extern oznacza zewnętrznego Powiązanie

Trzeba użyć tylko extern jeśli potrzebuje zewnętrznego powiązania.

dobre Przeczytaj:
what is external linkage and internal linkage in c++?

+0

Ok, to co myślę, ale kiedy usunąć statyczne z definicji, to nadal nie zbuduje. –

+0

Jeśli utrzymujesz deklarację jako 'static void myFunc (int);' funkcja * będzie * 'statyczna' bez względu na obecność' static' w definicji. –

+0

Dzięki, mam to, usunąłem statyczne, a także zadeklarowałem, że jest źle w nagłówku. –

Powiązane problemy