如何在MATLAB中访问类变量?

时间:2014-12-22 18:35:43

标签: matlab class oop

我想在同一个类的函数中访问类中声明的变量。例如,在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()作为静态方法,但无济于事。任何帮助将不胜感激。!

干杯!

更新:上面的代码实际上按预期工作,我得到的错误与此处的任何内容完全无关。

1 个答案:

答案 0 :(得分:0)

对我来说,在Matlab R2013a中,foo = Foo(input)已经是一个错误:Matlab期望构造函数被调用Foo,而不是constructor - 并且一个输入参数太多了默认构造函数。如果我将您的方法constructor重命名为Foo,那么它会正常工作,我会result等于4.5