Can't seem to figure out how to get UCanvas init/operations to work

2 things

  1. Not your problem though important: what you are doing here:
#include "ReticleWidget.h"

/**
 * 
 */
class UReticleWidget;

is both including the header AND forward declaring the class. if you include the header a class lives in, you don’t forward declare it. Normally you forward declare all classes required by the .h file without including the header file. This can be done if the header only uses those classes as pointer / reference properties or parameters. In the .cpp file (where those classes are actually used) you include their .h file. this improves compilation time and sometimes helps you avoid trouble with circular dependencies.

  1. your problem:
    you are calling a method as if it is static, because you are not calling it on an instance of the class:
void AUMGTestGameModeBase::BeginPlay()
{
	temp = UReticleWidget::GetX();
}

If the method is not going to be static, you should call it on an instance of UReticleWidget:

void AUMGTestGameModeBase::BeginPlay()
{
  UReticleWidget* ReticleWidget = CreateWidget<UReticleWidget>(GetYourPlayerControllerHere(), UReticleWidget::StaticClass());
  temp = ReticleWidget->GetX();
}
2 Likes