c++ - 类 COM 接口(interface)警告非虚拟析构函数

标签 c++ com abstract-class virtual-destructor

有没有办法告诉 gcc 它正在编译的抽象类不需要虚拟析构函数(就像 COM 对象从来没有的那样)?例如 nsISupports 总是提示缺少虚拟析构函数。关闭警告无济于事,因为我可能有非 COM 类的类,而我想要此警告。

所以 __attribute__((com_interface)) 被弃用并且只改变了 vtable 布局。是否有另一个 __attribute__ 可以告诉编译器我不想收到有关此类缺少析构函数的警告?

最佳答案

缺少虚拟 dtor 警告是有原因的 - 主要是因为它是调试的噩梦,尤其是在大型复杂的代码库中
您可能有一个非常具体的原因这样做,但问问自己,如果一个类被重构以致于它的用法在以后发生变化,会发生什么?

关于c++ - 类 COM 接口(interface)警告非虚拟析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1021430/

相关文章:

c++ - 从 sql 2008 表中获取 vector

c++ - 如何准备 ActiveX 控件以通过 Web 交付

c++ - 为什么重复调用FileOpenDialog会导致内存泄漏?

java - 在 Java 的父类(super class)构造函数中调用抽象方法

java - 在 Java 中使用 RSA 公钥加密数据并在 Crypto++ 中解密

c++ - 无法从 QQmlPropertyMap 的子类中的 QML 调用插槽或 Q_INVOKABLE

c# - 抽象类设计

C++:如何从另一个抽象类的派生类中获取抽象派生类方法的不同行为?

c++ - 在显示 child 之前,不会考虑父样式表填充

internet-explorer - IE Com 对象,方法 .Navigate 和 .Navigate2 之间的区别