The method reg_error() takes a variable $input,
function reg_error($input)
and tries to get its "username" element as though it was an array.
switch ($input['username']) {
But you're giving it an object:
$reg_validate->reg_error($reg_validate);
And it's unable to use an object as an array.
I think you've managed to get yourself totally confused about what you're doing. It's like you managed to forget you put all that stuff into the object, and then you wanted to put that stuff into the object and remembered that it was in the object so you tried putting the object into itself. I think what you wanted for those three lines were
function reg_error()
switch ($this->errors['username']) {
and
$reg_validate->reg_error();