MATLAB Answers

A constructor call to superclass appears after a return

13 views (last 30 days)
I am trying to check if a parameter is of a certain type when instantiating a subclass of a superclass, and I keep getting an error that appears to be associated with my method of checking of the argument type. The debugger won't even let me include a breakpoint without throwing the error "A constructor call to superclass appears after the object is used, or after a return." I think it's pretty obvious what line of code breaks my classes, but why am I not allowed to do this type checking? What other ways are there to confirm that my arguments are of a particular type? Code below.
classdef superClass < handle
properties
PropertyOne
PropertyTwo
end
methods
function sup = superClass(param1, param2)
sup.PropertyOne = param1;
sup.PropertyTwo = param2;
end
end
end
classdef subClass < superClass
properties
PropertyThree
end
methods
function sub = subClass(param1, param2, param3)
if ~isa(param1, 'char')
disp('param1 must be type char')
return
end
sub@superClass(param1, param2);
sub.PropertyThree = param3;
end
end
end

  0 Comments

Sign in to comment.

Accepted Answer

Philip Borghesani
Philip Borghesani on 16 Apr 2018

Call error instead of disp and return. The constructor must return a valid object in sub when return is called and your code has not initialized it yet.

  1 Comment

Mark Duarte
Mark Duarte on 16 Apr 2018
Thanks Phillip this worked. I will say though that if the disp and return were in the superclass, I am able to use the return statement in the constructor and it escapes without any error.

Sign in to comment.

More Answers (0)