我在C ++项目中使用来自dll的类。一切正常,直到......
当尝试调用某个方法(在对象浏览器中列出)时,我收到一个错误,指出此方法不是命名空间的成员。
经过调查,我注意到这种方法被列为“虚拟空隙x()密封”。
有没有办法调用这样的函数?
答案 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关键字专门用于虚拟方法。
您是否可以提供有关相关功能以及如何使用它的更多信息?