我想在同一个类的函数中访问类中声明的变量。例如,在C ++中,代码看起来像,
// 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;
}
我很困惑如何在MATLAB中获得相同的功能。到目前为止,我已经完成了:
% 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
我也尝试将bar()
作为静态方法,但无济于事。任何帮助将不胜感激。!
干杯!
更新:上面的代码实际上按预期工作,我得到的错误与此处的任何内容完全无关。
答案 0 :(得分:0)
对我来说,在Matlab R2013a中,foo = Foo(input)
已经是一个错误:Matlab期望构造函数被调用Foo
,而不是constructor
- 并且一个输入参数太多了默认构造函数。如果我将您的方法constructor
重命名为Foo
,那么它会正常工作,我会result
等于4.5
。