# Passing by pointer-reference in blueprints with C++ definitions

MyFunction( Class *& foo )

Inside a derivative BP of the above C++ class:

foo shows up as an output rather than an input.

Why?

Non-const references in C++ functions exposed to Blueprint are always treated as outputs by the parser in UnrealHeaderTool.
You can see this in the (very involved) logic of FHeaderParser::GetVarType in Engine/Source/Programs/UnrealHeaderTool/Private/HeaderParser.cpp. This is called by ParseParameterList during parsing a functions parameter list.
If you want foo to be an input, add const (this is what functions like RandomFloatFromRangeInStream do to facilitate passing the heavyweight stream parameter as an input).