Class implementation such that assignment x=MyObj does in fact x=MyObj.prop1
    5 views (last 30 days)
  
       Show older comments
    
Let's say I have a class
classdef TestClass < handle
    properties
        prop1 = 7
        prop2
    end
    methods
        function method1(obj)
            fprintf('prop1 is %g.', obj.prop1);
        end
    end
end
Now, when I do
Obj = TestClass;
x = Obj;
I want that the value of property prop1 is assigned to x, instead of the reference to Obj. So this assignment results to x=7.
And I would prefer to keep the class to be inherited from handle. But value class will also do.
I still would like to access prop2 as Obj.prop2 and call all the methods.
How this can be implemented in a custom class?
Thanks!
2 Comments
  Matt J
      
      
 on 4 Aug 2022
				The similar behaviour the MATLAB's class string has.
I don't think so. You should probably demonstrate what you mean.
Accepted Answer
  Matt J
      
      
 on 4 Aug 2022
        
      Edited: Matt J
      
      
 on 4 Aug 2022
  
      You can't have precisely what you have asked for, but you can do this,
classdef TestClass < handle
    properties
        prop1 = 7
        prop2
    end
    methods
        function method1(obj)
            fprintf('prop1 is %g.', obj.prop1);
        end
        function out=double(obj) %converter
            out=double(obj.prop1);         
        end
        function out=single(obj) %converter          
            out=single(obj.prop1);           
        end
    end
end
and then,
>> Obj=TestClass
Obj = 
  TestClass with properties:
    prop1: 7
    prop2: []
>> x=zeros(1,3)
x =
     0     0     0
>> x(3)=Obj
x =
     0     0     7
More Answers (0)
See Also
Categories
				Find more on Handle Classes 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!