我在我的 C++ 项目中使用来自 dll 的类。一切正常,直到...
尝试调用某个方法(在对象浏览器中列出)时,我收到一个错误,指出此方法不是命名空间的成员。
经过调查,我注意到这个方法被列为“virtual void x() seal”。
有没有办法调用这样的函数?
我在我的 C++ 项目中使用来自 dll 的类。一切正常,直到...
尝试调用某个方法(在对象浏览器中列出)时,我收到一个错误,指出此方法不是命名空间的成员。
经过调查,我注意到这个方法被列为“virtual void x() seal”。
有没有办法调用这样的函数?
为了将来参考,我刚刚收到了企业图书馆支持团队的回复。他们发布了指向以下内容的链接:
托管 C++ 和 IDisposable 我正在使用新的托管 C++/CLI 语法编写一些代码,但遇到了这个错误:
错误 C2039:“Dispose”:不是“System::IDisposable”的成员
我开始的代码是这样的:
image->Dispose(); // image implements IDisposable
这给了我同样的编译器错误,所以我想消除一个类/命名空间错误,所以我将它重写为:
((IDisposable ^)image)->Dispose();
这给出了上述错误。哎呀!
这是修复:
使用删除。托管 C++ 现在将 Dispose() 隐藏在终结器中。只需删除对象,它会处理其余的。怪异的。
这真的有效!!!!
密封在特定于 .NET 而不是 C++ 的 C++ CLI 关键字(托管 C++)中。
sealed
在函数上意味着您不能在派生类型中覆盖该方法。
sealed
并不意味着你不能调用函数,我猜你的函数是 private
.
我不明白为什么它是虚拟的和密封的本身就应该阻止你调用该函数。根据MSDN,sealed 关键字无论如何都是专门用于虚拟方法的。
您是否可以提供有关该功能以及您如何尝试使用它的更多信息?