Ho provato a scrivere una risposta dettagliata per, ma mi sono reso conto che sarebbe stata troppo lunga e complicata.
Ti segnalo un paio di errori presenti nello script che hai inviato ed inserisco, in calce una versione modificata della definizione della classe ed uno script con un possibile esempio di utilizzo della classe stessa:
[*] nella definizione della classe mancano 2 "end" alla fine dello script: il primo per "chiudere" la sezione "methods", il secondo per "chiudere" la definizione stessa della classe
[*] il nome del primo parametro della funzione "setGlobalx" deve essere cambiato affinchè non venga generato un messaggio di errore
In generale, una funzione chiamata "get ..." dovrebbe limitarsi a ritornare il valore di una property.
La funzione "getGlobalx" che hai definito, invece, chiama la funzione "setGlobalx" la quale, coerentemente con il suo nome, "setta" dei valori.
Ho modificato la funzione "getGlobalx" in modo che si limiti a "ritornare" il valore di una property.
Per settare i valori delle istanze della classe "contatore" bisogna chiamare la funzione "setGlobalx"
Per quanto riguarda la definizione delle funzioni, ho anche aggiunto alcuni parametri di input.
Non sono riuscito a capire il significato / la necessità della variabile globale "x" nella definizione aggiornata della classe e nello script di esempio non l'ho usata.
Definizione aggiornata della classe "contatore"
classdef contatore
%UNTITLED Summary of this class goes here
% Detailed explanation goes here
properties
% modificata inizializazinoe del campo "visita"
s=struct('visita',[],'contatore',1,'capacita',0);
conta;
end
methods(Static)
% Aggiunto un parametro e modificato il nome del parametro "self"
function r=setGlobalx(cont_class,input_1,n)
% Eliminata (commentata) la definizione della varaibile globale
% global x
% Eliminata l'assegnazione della variabile globale alla varaibile di output
% della funzione
% r=x;
cont_class.s(1).visita(n)=input_1;
% Assegnazione del valore del campo "vista" alla varaibile di output della
% funzione
r=cont_class;
for i=1:n
disp('Valore di "visita settato nella funzione "setGlobalx= ')
disp(num2str(cont_class.s(1).visita(i)));
end
end
% Funzione modificata: ritorna solo il valore della property "visita"
% Assegnato un paramtro di input: l'istanza della classe della quale si
% vogliono acquisire i valori
function r2 = getGlobalx(input_class)
r2=input_class.s(1).visita;
end
% Primo "end" aggiunto
end
% Secondo "end" aggiunto
end
Script di esempio per la creazione e l'utilizzo della classe "contatore"
% Creazione di un'istanza della classe "contatore"
cont_class=contatore;
% Utilizzo della funzione (method "setGlobalx"): il campo (l'array)
% "visita" dell'istanza "cont_class"
for n=1:3
% Definizione di "un valore" da assegnare al campo "visita"
val=n*2
% Chiamata del method "setGlobalx"
cont_class=cont_class.setGlobalx(cont_class,val,n);
end
% Stampa nella Command Window dei valori settati
cont_class.s(1).visita
% Utilizzo della funzione "getGlobalx" per "acquisire" i valori assegnati
% alla property "visita" dell'istanza "cont_class" tramite le chiamate alla
% funzione "setGlobalx" effettuate in precedenza
var_out=cont_class.getGlobalx(cont_class)
Hope this helps.