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 № 1Dla mnie, w Matlab R2013a, foo = Foo(input)
jest już błędem: Matlab oczekuje, że konstruktor zostanie wywołany Foo
, nie constructor
I 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.