【问题标题】:Friend functions in MatlabMatlab中的友元函数
【发布时间】:2014-07-14 15:58:29
【问题描述】:

我正在使用 OOP 现象在 Matlab 中工作,但是我想要像 C/C++ 中的 friend function 现象,即通过一个函数的输出到同一个类中的另一个函数只是为了它的使用。 这里,myClass 是我的类,其中myFunc2 需要输出myFunc1,我怎样才能让这两个函数成为朋友。有没有和其他语言一样的设施?

我的代码:

classdef myClass
    properties (Access=private)
        M;
      T
    end
    methods
        function obj = myClass(M,T)
            obj.M= M;
            obj.T=T;

        end
        function H=myFunc1(obj)
            obj.M{obj.jj}=jj+ii;
           H=obj.M{obj.jj};
        end

        function myFunc2(obj)
            obj.T= H;
        end
    end
end

【问题讨论】:

    标签: matlab class oop output friend-function


    【解决方案1】:

    一个class-member 函数对另一个函数的输出是简单地调用该函数并在该函数中收集输出,代码:

    function myFunc2(obj)
          H=myFunc1(obj);
          obj.T= H;
    end
    

    【讨论】:

      【解决方案2】:

      不确定你到底想要什么,但我猜你想在myFunc2 中执行myFunc1?如果是这种情况,您可以简单地在myFunc2 中执行myFunc1,如下所示:obj.myFunc1();。例如(这是一般的例子):

      classdef myClass
          properties (Access=private)
              M;
              T;
          end
          methods
              function obj = myClass()
              end
              function H=myFunc1(obj)
                  H = 3;
              end
      
              function myFunc2(obj)
                  disp(obj.myFunc1())
              end
          end
      end
      

      如果你想让myFunc2对类的其余部分隐藏,你可以将它定义为一个嵌套函数,例如:

      classdef myClass
          properties (Access=private)
              M;
              T;
          end
          methods
              function obj = myClass()
              end
      
              function myFunc2(obj)
      
                  function H=myFunc1()
                      H = 3;
                  end
      
                  disp(myFunc1())
              end
          end
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-06
        • 1970-01-01
        • 1970-01-01
        • 2018-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多