I am working on some simple object-oriented code in MATLAB. I am trying to call one of my class methods with no input or output arguments in its definition.
Function definition:
function roll_dice
Function call:
obj.roll_dice;
When this is executed, MATLAB says:
??? Error using ==> roll_dice Too many input arguments. Error in ==> DiceSet>Diceset.Diceset at 11 obj.roll_dice; (etc...)
Anyone have any ideas what could be causing it? Are there secret automatic arguments I’m unaware that I’m passing?
When you make the call:
It is actually equivalent to:
So
objis the ‘secret’ automatic argument being passed toroll_dice. If you rewrite the methodroll_diceto accept a single input argument (even if you don’t use it), things should work correctly.Alternatively, if you know for sure that your method
roll_diceis not going to perform any operations on the class object, you can declare it to be a static method as Dan suggests.For more information on object-oriented programming in MATLAB, here’s a link to the online documentation.