Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 构造函数无法访问其自己类的私有属性?_Matlab_Oop_Properties_Constructor - Fatal编程技术网

Matlab 构造函数无法访问其自己类的私有属性?

Matlab 构造函数无法访问其自己类的私有属性?,matlab,oop,properties,constructor,Matlab,Oop,Properties,Constructor,我正试图编写一个类来创建积分对象。但是,构造函数工作不正常。当GetAccess设置为private或protected时,它无法将integral.value设置为正确值。只有当GetAccess设置为public时,它才能工作。为什么 这是密码 classdef nintegral properties(GetAccess=private, SetAccess=private) value end methods function v =

我正试图编写一个类来创建积分对象。但是,构造函数工作不正常。当GetAccess设置为private或protected时,它无法将integral.value设置为正确值。只有当GetAccess设置为public时,它才能工作。为什么

这是密码

classdef nintegral
    properties(GetAccess=private, SetAccess=private)
       value
    end

    methods
       function v = nintegral(j) %class constructor
         if isa(j,'pf')==0
            disp('Function object is not a piecewise function')

         else
            v.value = integral(@(x) j.p1(1)*x.^2 + j.p1(2)*x + j.p1(3),j.r1(1),j.r1(2)) + integral(@(x) j.p2(1)*x.^2 + j.p2(2)*x + j.p2(3),j.r2(1),j.r2(2));
        end

    end

end
结束

这是pf课程

 classdef pf
  properties(GetAccess=public,SetAccess=private)
    r1=[-1,0]; %range 1
    r2=[0,1]; %range 2
    p1=[1,1,1]; %polynomial 1
    p2=[1,1,1];  %polynomial 2       
  end

methods
    function j=pf(r1,p1,r2,p2) % class constructor
        if r1(2)>r2(1)
            disp('ERROR FUNCTION DEFINITION: Overlaping range')

        else
            j.r1=r1;
            j.r2=r2;
            j.p1=p1;
            j.p2=p2;
        end

    end

    function v=eval(j,x)
        if x<j.r1(1) | x>j.r2(2)
            disp('Error: Out of Range')
        else
            if x>j.r1(1) & x<=j.r1(2)
                v=polyval(j.p1,x);
            else
                v=polyval(j.p2,x);
            end

        end

    end

end
classdef pf
属性(GetAccess=public,SetAccess=private)
r1=[-1,0];%范围1
r2=[0,1];%范围2
p1=[1,1,1];%多项式1
p2=[1,1,1];%多项式2
终止
方法
函数j=pf(r1,p1,r2,p2)%class构造函数
如果r1(2)>r2(1)
disp('错误函数定义:重叠范围')
其他的
j、 r1=r1;
j、 r2=r2;
j、 p1=p1;
j、 p2=p2;
终止
终止
函数v=eval(j,x)
如果xj.r2(2)
disp('错误:超出范围')
其他的

如果x>j.r1(1)&x如何检查该值?如果你在构造器外检查它,那么它是正常的…有要检查的函数吗?你能把代码显示在你检查值的地方吗?你是说你想要一个pf对象吗?“让我和你分享一下。”拉特伯特请解释一下。我是新手。检查构造函数之外的值是什么意思?我看到的是,我尝试将pf对象传递给nintegral构造函数,执行一些计算,然后将结果设置为nintegral.value。如果我创建pf,然后将其传递给nintegral,您的代码对我来说运行良好。但是,在复制代码时,您遗漏了“end”语句。