variable scope in classes

So again, here is the entire code, which works, though trimmed down from its original form (it currently just displays "boot complete and the contents of 2 variables for troubleshooting purposes)

It successfully calls on the LCDUPDATE class in the header and updates the screen once
The problem is that lcd.setCursor(3, 3); does not work, it just moves to the 3rd cell of the screen instead of the 3rd row, 3rd cell like it should
The same thing that happens if you don't have an lcd.begin stated in your sketch (but it is)

It appears that lcd.begin is not valid in the header, even removing it from the sketch and only stating it in the header doesn't work. (lcd does not name a type) even when liquidcrystal.h is included and the liquidcrystal variable is declared.

I've tried looking into the liquidcrystal library, thats way above my pay grade.

Main Sketch

//include required libraries
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Stepper.h>
#include "LCDU.h"
;





//===CONSTANTS and variables (buttons and pins)
const int buttonPin = 9;    // start button
const int estopbutton = 8;  //estop button
const int indexswitch = 7;  //table index switch
const int indexmotor = 6;   //table stepper motor
const int indexdir = 10;    //table stepper direction pin
//===== LED PINS
const int stn1good = 50;         //50
const int stn1bad = 52;          //52
const int stn2good = 46;         //46
const int stn2bad = 48;          //48
//===== STEPPER PINS
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 42, 40, 38, 36);
int stepspeed = 10;
//ALSO SEE myStepper.setSpeed(100);
//==== LCD Variable

int LCDtest = 0;
int printtest;

void setup()
{   
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    lcd.begin(20, 4);
//  lcdclear();
//  lcdbooting();
  }


void loop()
{
LCDUPDATE(1, 1, 1, 1, 1, 1, 1);
}

LCD header:

#ifndef LCD_h
#define LCD_h
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

  int status1;     // LCD STATUS DISPLAYS  1 = BOOTING 2 = READY 3 = INDEXING 4 = FAILURE 5 = PASS
  int status2;
  int status3;
  int status4;
  int status1old;
  int status2old;
  int status3old;
  int status4old;
  int hstatus;    // header
  int mstatus;    // Middle status        1= Startup 2=Ready 3=Waiting for STN 4 index stg 1
  int bstatus;    // Bottom status
  int hstatusold;
  int mstatusold;
  int bstatusold;
  int feedback;       // lcd feedback print
  int feedbackold;



  
class LCDUPDATE
{
  // all LCDUPDATE variables and shit go here
  // https://learn.adafruit.com/multi-tasking-the-arduino-part-1/a-classy-solution


  // Constructor

  
  public:
  LCDUPDATE(int status1, int status2, int status3, int status4, int hstatus, int mstatus, int bstatus)
  {
  if (hstatus != hstatusold) {
    if (hstatus == 1) {
      lcd.setCursor(0, 0);
      lcd.print("                    ");
      lcd.setCursor(0, 0);
      lcd.print("   Boot Complete    ");
    }
        hstatusold = hstatus;
        delay(100);
      lcd.setCursor(2, 2);
      lcd.print(hstatus);
      lcd.setCursor(3, 3);
      lcd.print(hstatusold);
  }

}
};



#endif