【发布时间】:2014-01-04 17:12:34
【问题描述】:
我正在尝试将枚举类与 Matlab 中的非静态方法结合起来。我希望创建一个“LogEvent”类,它具有函数“log”,该函数将枚举成员(例如 LogEvent.INFO、LogEvent.ERROR 或 LogEvent.WARNING)和一个字符串作为输入参数,用于将此消息附加到文件中。我希望对不同的程序重复使用这个 LogEvent 类,因此该类具有在构造过程中指定的属性“fileName”并引用输出文件。下面是形成我的 classdef 文件的代码:
classdef LogEvent
%Class definition for logging events.
properties
fileName;
end
methods
function obj = LogEvent(outFile)
obj.fileName = outFile;
end
function log(obj,type,logStr)
switch (type)
case LogEvent.INFO
typeStr = 'INFO';
case LogEvent.WARNING
typeStr = 'WARNING';
case LogEvent.ERROR
typeStr = 'ERROR';
end
FID = fopen(obj.fileName,'a');
Str = sprintf('%s - %s: %s\n',datestr(now),typeStr,logStr);
fprintf(FID,Str);
fclose(FID);
end
end
enumeration
INFO,
WARNING,
ERROR
end
end
现在诚然,我没有很多编程经验,所以我可能会以完全错误的方式处理这个问题,尽管我曾尝试用谷歌搜索这个问题但收效甚微——我可能不知道某些特定的关键字会“命中”钉在头上”。这是我的信念,因为需要创建此类的多个实例(以引用不同的文件),“日志”函数需要是非静态的。我在尝试创建此类的实例时收到此错误消息:
Error using LogEvent
While creating an instance of class 'LogEvent':
No value has been provided for the enumeration member named 'INFO'. For an
enumeration derived from a built-in class, a value must be provided for each
enumeration member.
Error in ZOHB (line 10)
obj.Log = LogEvent('ZOHB.log');
在“ZOHB”类中,我尝试创建 LogEvent 类的实例,并将其分配为 ZOHB 类的属性。
【问题讨论】:
标签: matlab class methods enumeration non-static