/ / Jak uzyskać dostęp do zmiennych klas w MATLAB? - matlab, klasa, oop

Jak uzyskać dostęp do zmiennych klas w MATLAB? - matlab, klasa, oop

Chciałbym uzyskać dostęp do zmiennych zadeklarowanych w klasie w funkcji w tej samej klasie. Na przykład w C ++ kod będzie wyglądał,

// Header
class Foo
{
public:
Foo(int input);
~Foo();
void bar();
int a, b;
}

// Implementation
Foo::Foo(int input)
{
a = input;
}

Foo::~Foo()
{
}

void Foo::bar()
{
b = a/2;
}

// Usage
#include <Foo.h>

int main()
{
int input = 6;
Foo test_class(input);

// Access class variable
std::cout << test_class.b << std::endl;

return EXIT_SUCCESS;
}

Jestem zdezorientowany, jak uzyskać tę samą funkcjonalność w MATLAB. Do tej pory zrobiłem:

% Class "m" file
classdef Foo

properties
a;
b;
output;
end

methods
% Class constructor
function obj = Foo(input)
obj.a = input;
obj.b = obj.a/2;
end

% Another function where I want access to "b"
function output = bar(obj)
output = ( obj.b + obj.a )/2;
end
end

end

% Usage
input = 6;
foo = Foo(input);

result = foo.bar(); %MATLAB complains here

Próbowałem też wkładać bar() jak Metoda statyczna ale bez skutku. Każda pomoc będzie bardzo cenna.!

Twoje zdrowie.!

AKTUALIZACJA: Powyższy kod faktycznie działa zgodnie z oczekiwaniami, a błąd, który otrzymałem, był całkowicie niezwiązany z niczym tutaj.

Odpowiedzi:

0 dla odpowiedzi № 1

Dla mnie, w Matlab R2013a, foo = Foo(input) jest już błędem: Matlab oczekuje, że konstruktor zostanie wywołany Foo, nie constructorI ten jeden parametr wejściowy jest o jeden za dużo dla domyślnego konstruktora. Jeśli zmienię nazwę twojej metody constructor do Foo to działa i dostaję result równy 4.5 jak zamierzono.