Because they are not the internal members of the class. the format in which you specify is such that the function needs to be external.


Now if you get into the operator overloading this should be

OutputClassFunction.Operator <<(YourVariable)

And so you need the first parameter as IO class variable and so you cannot have the function as internal.