我想在基类deprecated
中标记一个纯虚方法,并在有人尝试在某处调用该方法(或其覆盖)时收到编译器警告,但不是,与当前情况类似,对于覆盖的每个声明-因为该方法在基类中是纯虚拟的,因此所有子类必须都将其实现为可实例化,但这意味着这些覆盖中的每个覆盖都会产生一个(或多个)编译器警告,这些警告实际上是对输出的垃圾邮件。
因此,我只想在调用方法(或替代方法之一)时发出警告。
在不跳铁圈*的情况下是否有可能?
PS:我使用以下宏将基本方法标记为已弃用:
#if defined(_MSC_VER)
#define DEPRECATED __declspec(deprecated)
#elif defined(__GNUC__) || defined(__clang__)
#define DEPRECATED __attribute__((deprecated))
#else
#pragma message("WARNING: DEPRECATED macro not implemented for this compiler")
#define DEPRECATED
#endif
...并且我目前正在VS2015中进行编译。 如果仅将基本方法标记为不赞成使用,并且同时在基本方法和重写上都使用宏,则将输出编译器警告。
*)就像在每个重写的函数定义中放入一条message(...)或静态断言并内联它们,或类似的东西……我认为那不值得。 em>