WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme mit Static

 

ingobulla
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 10.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2009, 15:57     Titel: Probleme mit Static
  Antworten mit Zitat      
Hallo,

ich habe eine Klasse Alphabet (nur die statische Methode ganz unten ist relevant)

Code:

classdef Alphabet
    properties (SetAccess = private)
        chars
    end
    properties (Dependent = true)
        num_nucl
    end
   
    methods
        function obj = Alphabet(chars)
            obj.chars = chars;
        end
       
        function num_nucl = get.num_nucl(obj)
            num_nucl = length(obj.chars);
        end
       
        function char = idx_to_char(obj, idx)
            if (idx < 1) || (idx > obj.num_nucl)
                error('Trying to convert an integer to an element of the alphabet which is too small/large')
            end
            char = obj.chars(idx);
        end
        function idx = char_to_idx(obj, char)
            matches = find(obj.chars == char);
            if length(matches) ~= 1
                error(['Trying to convert an character to an index which is not member of the alphabet: ' char])
            end
            idx = matches(1);
        end        
    end
   
    methods (Static = true)   % RELEVANT
        function b = is_gap(char)
            b = (char == '-');
        end
    end

end


Die statische Methode versuche ich nun mittels

Code:
if (~Alphabet.is_gap(char))


zu benutzen, erhalte jedoch den Fehler

Code:
??? The class Alphabet has no property or method named 'is_gap'.

Error in ==> Alignment>Alignment.em_freqs at 104
                    if (~Alphabet.is_gap(char))


Weiß jemand, was hier los ist?
Private Nachricht senden Benutzer-Profile anzeigen


joekey
Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 13.02.2009, 09:15     Titel:
  Antworten mit Zitat      
Hallo,

versuche mal oben in der Klassendefinition von handle Klasse zu erben.

classdef Alphabet < handle
....

Ich gehe davon aus, dass wenn es sich um keine Handle-Klasse handelt, hat man keinen Zugriff auf die Klassenvariablen.

LG Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
ingobulla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 10.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2009, 11:56     Titel:
  Antworten mit Zitat      
joekey hat Folgendes geschrieben:
versuche mal oben in der Klassendefinition von handle Klasse zu erben.


Das hat leider keine Wirkung.
Private Nachricht senden Benutzer-Profile anzeigen
 
ingobulla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 10.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2009, 12:10     Titel:
  Antworten mit Zitat      
Ich habe nun festgestellt, dass es läuft, wenn ich die Klasse nicht "Alphabet", sondern "Alpha" nenne.

Hat jemand dafür eine Erklärung?
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 14.02.2009, 10:21     Titel:
  Antworten mit Zitat      
Hallo,

habe heute dein Klasse getestet. Konnte dein Fehler aber nicht reproduzieren.

Ich bekomme folgende Ausgaben wenn ich die Klasse Alphabet nehme:

>> ~Alphabet.is_gap(char)
ans =
[]
>> ~Alphabet.is_gap(char)
ans =
[]
>> ~Alphabet.is_gap(' ')
ans =
1
>> if (~Alphabet.is_gap(char)); disp('0'); else disp('1'); end
1
>> if (~Alphabet.is_gap(' ')); disp('0'); else disp('1'); end
0


LG Joe
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 16.02.2009, 15:13 Uhr von Bijick
Von Programmierung nach Objektorientierte Programmierung
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.