【问题标题】:MATLAB: error when I try to access property of objectMATLAB:当我尝试访问对象的属性时出错
【发布时间】:2014-02-05 06:12:05
【问题描述】:

这是它返回的错误: 你不能得到 Planet 的 't' 属性。

Problem4dot10 中的错误(第 12 行) 名称=mercury.t(水星);

我创建了 getter 函数来返回行星类的属性:

methods %for getter functions
        function t=get.t(obj)
            t=obj.t;
        end
        function r=get.r(obj)
            r=obj.r;
        end
        function x=get.x(obj)
            x=obj.x;
        end
        function y=get.y(obj)
            y=obj.y;
        end
        function vx=get.vx(obj)
            vx=obj.vx;
        end
        function vy=get.vy(obj)
            vy=obj.vy;
        end
        function n=get.n(obj)
            n=obj.n;
        end
        function n=get.Name(obj)
            n=obj.Name;
        end
    end

我从 Problem4dot10.m 文件中调用了 getter:

mercury=Planet(1,0.002,0,2*pi,1,0,'Mercury');
mercury.sett(60);
name=mercury.t(mercury);

我查看了文档以试图弄清楚。我想做的是创建一个行星类来跟踪行星的位置,并计算行星在下一个时间步的位置。然后它假定新的状态。

【问题讨论】:

  • 能否更新示例以包含属性定义?

标签: matlab matlab-class


【解决方案1】:

在我看来,t 属性是私有的。您可以使用以下方式将其公开,例如:

properties(SetAccess = public, GetAccess = public)
    t = 0;
end

properties(Access = public)
    t = 0;
end

您也不需要将mercury 传递给 t getter 方法。 name=mercury.t; 应该够了。

【讨论】:

    猜你喜欢
    • 2012-03-18
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多