C ++虚拟(密封)功能

时间:2010-02-14 03:29:57

标签: c++-cli sealed method-call

我在C ++项目中使用来自dll的类。一切正常,直到......

当尝试调用某个方法(在对象浏览器中列出)时,我收到一个错误,指出此方法不是命名空间的成员。

经过调查,我注意到这种方法被列为“虚拟空隙x()密封”。

有没有办法调用这样的函数?

3 个答案:

答案 0 :(得分:3)

为了将来参考,我刚刚收到了企业库支持团队的回复。他们发布了以下链接:

托管C ++和IDisposable 我正在使用新的Managed C ++ / CLI语法编写一些代码,我遇到了这个错误:

  

错误C2039:'Dispose':不是'System :: IDisposable'的成员

我开始使用的代码是:

image->Dispose(); // image implements IDisposable

给了我相同的编译器错误,所以我想消除一个类/命名空间错误,所以我把它重写为:

((IDisposable ^)image)->Dispose();

出现上述错误。糟糕!

以下是修复:

使用删除。托管C ++现在在终结器中隐藏Dispose()。只需删除对象,它就可以处理剩下的对象。怪异。

这真的有用!!!!

答案 1 :(得分:2)

Sealed在特定于.NET而不是C ++的C ++ CLI关键字(托管C ++)中。

函数的

sealed意味着您无法在派生类型中覆盖该方法。

sealed并不意味着你无法调用该函数,我猜你的函数是private

答案 2 :(得分:1)

我不明白为什么它是虚拟和密封本身会阻止你调用该函数。根据{{​​3}},sealed关键字专门用于虚拟方法。

您是否可以提供有关相关功能以及如何使用它的更多信息?