how to call a get.properties method in a script

3 views (last 30 days)
Hi, I'm trying to use the get.propertie function on a private propertie.
classdef t_point2D
properties (Access = private)
X;
Y;
end
methods
%Defenir le constructeur
function point2D = t_point2D(X,Y)
if nargin == 0
point2D.X =0;
point2D.Y=0;
elseif nargin == 1 || nargin >2
fprintf('Error');
else
point2D.X = X;
point2D.Y = Y;
end
end
%accesseurs
function X = get.X(point2D)
X = point2D.X;
end
Then, I try to call it in a script :
point1 =t_point2D(2,8);
XX = get.X(point1);
I get the following error message : Undefined variable "get" or class "get.X".
Error in test (line 4) XX = get.X(point1);
I supposed I'm not calling the method the right way? I can't find the doc on how to call a get.prop function.

Accepted Answer

Guillaume
Guillaume on 23 Mar 2017
You have two problems:
1. You're using the wrong syntax for accessing properties. Regardless of the syntax used to define the property accessor, the way to access the property is just obj.propname, so:
XX = point1.X
2. The above won't help because the whole point of a private property is that it can't be accessed from outside the class. So if you want access to the X property you need to make it public (at least for GetAccess)
Note: As shown, your accessor function does not enable anything that wasn't already available without it. So if all you do is make X public, you may as well remove that function.
The following may be what you're after:
classdef Point2D
properties (GetAccess = public, SetAcces = private)
X;
Y;
end
methods
function this = Point2D(X, Y) %constructeur
%body of constructor
end
%No need for accessor, you can already do Point2D.X
end
end

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!