Hallo! Scope Resolution Operator: :: Och för att förklara i ord istället för inklippt länk: Det känner jag till. Men det jag inte fick fram tillräckligt tydligt i mitt första inlägg var att det inte finns någon annan funktion än den i stdio.h, alltså ingen funktion med samma namn i vår klass. Och därför blev jag lite undrande över om det finns någon annan vinkel på tillämpningen av :: som jag har missat. Bara för att säg, VS, skickar dig till samma definition oavsett betyder det inte att det är den enda. Jag har råkat ut för att den missförstår lite komplicerade system och ger en fel definition. Du bör söka efter den manuellt istället för att vara säker på att det bara är den.::sprintf_s()
Jag såg följande i en funktion i en klass:
::sprintf_s(...)
Finns det någon här som har en bra förklaring till varför föregående programmerare (som givetvis inte finns här längre) har skrivit :: före sprintf_s()?
Om man går till definitionen hamnar man i stdio.h, men det gör man även utan dubbelkolon.
/PeterSv: ::sprintf_s()
You can tell the compiler to use the global identifier rather than the local identifier by prefixing the identifier with ::, the scope resolution operator.
/HåkanSv:::sprintf_s()
Om du har en funktion som heter sprintf_s i, säg den klass där anropet ligger, och vill använda en som är definierad globalt istället, så använder du ::.Sv: ::sprintf_s()
Men jag antar att utvecklaren i fråga kan ha varit extratydlig i sin strävan efter att anropa rätt funktion.Sv:::sprintf_s()
<b>>Men jag antar att utvecklaren i fråga kan ha varit extratydlig i sin strävan efter att anropa rätt funktion.</b>
Jepp, om det verkligen är enda instansen av funktionen, högst sannolikt. Eller antagit att det ska komma in en funktion med samma namn någon gång i framtiden, eller inte varit säker och bara slängt på dem (vanlig felsökningsprincip, "jag vet inte vad som är fel så jag ändrar grejer som kan vara fel tills det blir rätt", och på så sätt trott att det var det som var grejen).