extern op een statische functie in C ++

Ik weet niet waarom dit me gek maakt, maar dat is het wel. Ik heb een functie gedefinieerd en doorgestuurd in de hoofdregistratie.

static void myFunc(int x);

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

main()

Ik wil myFunc (int x) in een andere klas gebruiken. Dus ik zou denken dat alles wat ik moet doen is externe static void myFunc (int x) binnen die klassenheader en bel dan gewoon waar ik moet in de klassendefinitie, maar het zal niet werken.

Wat doe ik verkeerd?

Bedankt

9

1 antwoord

Je kunt extern en statisch niet samen gebruiken, ze sluiten elkaar uit.

static means Internal Linkage
extern means External Linkage

U moet alleen extern gebruiken als u externe koppeling nodig hebt.

Good Read:
what is external linkage and internal linkage in c++?

18
toegevoegd
Ok, dat is wat ik dacht, maar als ik de static uit de definitie verwijder, zal het nog steeds niet bouwen.
toegevoegd de auteur Dixon Steel, de bron
Bedankt, ik heb het, ik verwijderde de statische, en ook had ik het verkeerd in de header aangegeven.
toegevoegd de auteur Dixon Steel, de bron
Als u de verklaring handhaaft als static void myFunc (int); is de functie static ongeacht de aanwezigheid van static in de definitie.
toegevoegd de auteur David Rodríguez - dribeas, de bron
@DixonSteel: u verwijdert het statische zoekwoord uit zowel de aangifte als de definitie van de functie en dan kunt u het openen met behulp van extern van een ander bronbestand (eigenlijk vertaaleenheid)
toegevoegd de auteur Alok Save, de bron