Simple handle problem (I think)

2 visualizaciones (últimos 30 días)
Marc-Olivier Labrecque-Goulet
Marc-Olivier Labrecque-Goulet el 17 de Abr. de 2017
Hi, I'm having trouble understanding how to use handles but I understand the basic principle so I know I should be using them for what I do. I want to make links between 2 objects of the same class. Here is an exemple.
class classA
properties
val1 = classB.empty;
val2 = [0,0];
%here the variable I should probably use handle.
links = classA.empty;
end
%here is how I use it in a script or function :
obj1 = classA;
obj2 = classA;
%I add obj2 to the list of links obj1 is doing and vice versa:
obj1.links=[obj1.links,obj2];
obj2.links=[obj2.links,obj1];
I guess links could be an object type handle but I have no clue how I should write it, and how to set it.

Respuesta aceptada

Sebastian Castro
Sebastian Castro el 17 de Abr. de 2017
Editada: Sebastian Castro el 17 de Abr. de 2017
This should work, with the exception that classes in MATLAB are by default "value classes". This means that when you say
obj1.links=[obj1.links,obj2];
and then refer to obj1.links(1) (assuming it was previously empty), you're actually referring to a copy of obj2 instead of obj2 itself.
To declare a class as a handle class, i.e., passed by reference, change the first line of your class definition to inherit from the handle superclass:
classdef classA < handle
- Sebastian
  1 comentario
Marc-Olivier Labrecque-Goulet
Marc-Olivier Labrecque-Goulet el 17 de Abr. de 2017
So, that mean I can change properties values of obj2 by calling obj1.links(1)? wow I wasnt expecting that to be that easy!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Function Handles en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by