1

次のコードでは、 class のデストラクタがTdcTestResultfunction の最後で呼び出される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

実際の問題は、事実上変更していないことだと思いますobj。必要に応じて、新しいTdcTestResult内部への参照によりmTestResults、デストラクタが呼び出されないようにする必要があります。

これは、ダニアル R の回答に関連しています。サブクラスTdcとして実装しない場合、メソッドは変更されたを返す必要があります。そうしないと、内部で行った変更が失われます。handleaddobjadd

したがってobj、呼び出し構文を返して変更する必要があります

tdcObject = tdcObject.add(...);

または継承元handle- おそらくより良い代替手段です。

于 2013-11-20T09:40:21.447 に答える
0

TdcTestResultそうhandleしないと、コードが機能しません。ドキュメントの詳細

これで問題が解決しない場合は、実行可能なコードの例を含めてください。

于 2013-11-19T22:46:40.447 に答える