1

在下面这段代码中,类的析构TdcTestResult函数在函数结束时被调用add,所以方法变量mTdcTestResults将再次变为空。

如何使TdcTestResult内部实例mTdcTestResults持久化?

classdef Tdc

    properties % (Access = private)
        mTestRun     = TdcTestRun;
        mTestResults = [];
    end

    methods(Access = public)

        function add(obj, componentSerialNumber, testName, testVersion, paramName, unitOfMeasureCode, paramScale, paramLimitTypeCode, paramLowerLimit, paramUpperLimit, responseValue, folderPath, isFailed, isOverridden, overriddenReason)
            if(nargin > 0)
                obj.mTestResults = [obj.mTestResults TdcTestResult];
                obj.mTestResults(end).set(componentSerialNumber, testName, testVersion, paramName, unitOfMeasureCode, paramScale, paramLimitTypeCode, paramLowerLimit, paramUpperLimit, responseValue, folderPath, isFailed, isOverridden, overriddenReason);

                obj.mTestRun.addTestResult(obj.mTestResults(end));
            end
        end
    end
end
4

2 回答 2

0

TdcTestResult needs handle to be a superclass, otherwise your code can not work. More details in the documentation

If this does not help, please include an executable example of code.

于 2013-11-19T22:46:40.447 回答
0

我认为实际的问题是你实际上并没有改变obj. 如果您愿意,对 newTdcTestResult内部的引用mTestResults应该会阻止调用析构函数。

这与 Danial R 的回答有关:如果您不Tdc作为handle子类实现,则您的add方法必须返回修改后的obj. 否则,您在内部所做的更改add将丢失。

因此,您要么必须返回obj并将调用语法修改为

tdcObject = tdcObject.add(...);

或继承自handle- 这可能是更好的选择。

于 2013-11-20T09:40:21.447 回答