我有这个界面。如果我派生,我是否需要再次指定format attribute
?并且,如果类Deriv
实现此接口,我可以使用Deriv::LT_DEBUG
吗?
class Logger
{
public:
enum LogType
{
LT_DEBUG = 0,
LT_WARNING,
LT_ERROR,
LT_STAT,
LT_TEXT
};
__attribute__((format(printf, 6, 7)))
virtual const char* EHLog(LogType,
bool,
const char*,
int,
const char*,
...) = 0;
virtual ~Logger(){}
};
答案 0 :(得分:0)
我找不到任何关于它的文档,但我想__attribute__
注释不是由派生类隐式继承的。
这意味着,如果您通过EHLog
实例,引用或指针调用Deriv
,则仅在Deriv::EHLog
还指定__attribute__((format))
注释时才进行格式检查。
我猜测的原因是这样编译器不必更改其名称查找机制来处理被覆盖的基类函数上__attribute__
注释的可能性。
关于第二个问题:是的,您可以使用派生类限定从基类访问名称。 Deriv::LT_DEBUG
应该工作并解析为与Logger::LT_DEBUG
相同的名称。