Getting error message "Unable to resolve the name obj.function."

조회 수: 15 (최근 30일)
Max Rybarski
Max Rybarski 2020년 9월 7일
댓글: Max Rybarski 2020년 9월 7일
I'm having a problem calling a fuction of a handle from another handle class. Testing the function itself in the command window works fine, but when i call the function from a different class, i get the error message "Unable to resolve the name obj.function". I already tried to restore the default path of matlan as suggested here. Broken down, the code of the two classes looks like this:
1 classdef Filter < handle
2 properties (Access = private)
3 f_high = 0;
4 f_tol = 0;
5 end
6
7 methods (Access = public)
8
9 %Construktor
10 function obj = Filter(f_high, f_tol)
11 obj.setHighFrequencyBorder(f_high);
12 obj.setFilterTolerance(f_tol);
13 Signal.checkSamplingFrequency(f_high, f_tol);
14 end
15 end
1 classdef TestSignal < handle
2
3 properties (Access = private)
4 samplingFrequency = 0;
5 end
6
7 methods (Access = private)
8 %Constructor
9 function obj = TestSignal(samplingFrequency)
10 obj.setSamplingFrequency(samplingFrequency);
11 end
12 end
13
14 methods (Static)
15 function inst = getInstance(samplingFrequency)
16 persistent testSignal;
17 if isempty(testSignal)
18 testSignal = TestSignal(samplingFrequency);
19 inst = testSignal;
20 else
21 inst = testSignal;
22 end
23 end
24 end
25
26 methods (Access = public)
27
28 %Setter
29 function setSamplingFrequency(obj, samplingFrequency)
30 obj.samplingFrequency = samplingFrequency;
31 end
32 end
33 end
The Issue occurs when calling the function in line 13 of the class Filter when calling the function in line 29 of class TestSignal. I've created an object called "Signal", so in theory the class Filter should "know" this funtion.
Class TestSignal is implemented as a Singleton.
Thanks a lot upfront for helping out.

답변 (1개)

Walter Roberson
Walter Roberson 2020년 9월 7일
Your posted code has no property or method named Signal and no global variable by that name. It also does not appear to be somehow nested such that Signal might somehow be defined in an outer scope.
You also do not have a class named Signal that has a static method named checkSamplingFrequency . Instead you have a class named TestSignal that has a static method named getInstance()
  댓글 수: 1
Max Rybarski
Max Rybarski 2020년 9월 7일
So i have to make the function checkSamplingFrequency static and call it with
TestSignal.checkSamplingFrequency(f_high, f_tol);
in order to work.
Thanks a lot!

댓글을 달려면 로그인하십시오.

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by