Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I get a "Too many input arguments" error when not passing any?

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?

like image 435
farr Avatar asked Apr 03 '09 20:04

farr


1 Answers

When you make the call:

obj.roll_dice;

It is actually equivalent to:

roll_dice(obj);

So obj is the "secret" automatic argument being passed to roll_dice. If you rewrite the method roll_dice to 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_dice is 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.

like image 117
gnovice Avatar answered Sep 25 '22 05:09

gnovice