如何在托管c++中实现接口?

发布于 2024-12-27 17:57:01 字数 784 浏览 1 评论 0原文

这是我声明的接口:

[ServiceContract]
public interface class IShedluer
{
    [OperationContract]
    array<Object^>^ GetResult(UInt64 taskId);
}

这是试图实现它的类:

ref class MyShedluer:IShedluer
{
    Shedluer ^shedluer;//this is NOT MyShedluer
public:
    MyShedluer(void);

    array<Object^>^ GetResult(UInt64 taskId)
    {
        return shedluer->GetResult(taskId);
    }
}

当我尝试编译它时,我得到了

Error   15  error C3766: 'MyShedluer' must provide an implementation for 
the interface method 'cli::array<Type> ^IShedluer::GetResult(unsigned __int64)'
d:\users\menkaur\documents\visual studio 2010\projects\MyProject\
\kernel\MyShedluer.h    78  1   MyProject.Kernel

为什么我会得到这个?

Here's interface that I have declared:

[ServiceContract]
public interface class IShedluer
{
    [OperationContract]
    array<Object^>^ GetResult(UInt64 taskId);
}

Here's the class that is trying to implement it:

ref class MyShedluer:IShedluer
{
    Shedluer ^shedluer;//this is NOT MyShedluer
public:
    MyShedluer(void);

    array<Object^>^ GetResult(UInt64 taskId)
    {
        return shedluer->GetResult(taskId);
    }
}

When I'm trying to compile this, I'm getting

Error   15  error C3766: 'MyShedluer' must provide an implementation for 
the interface method 'cli::array<Type> ^IShedluer::GetResult(unsigned __int64)'
d:\users\menkaur\documents\visual studio 2010\projects\MyProject\
\kernel\MyShedluer.h    78  1   MyProject.Kernel

Why am I getting this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九八野马 2025-01-03 17:57:01

实现接口的正确语法是添加virtual

ref class MyShedluer:IShedluer
{
public:
  virtual array<Object^>^ GetResult(UInt64 taskId);
}

编译器也会告诉你这一点,也请查看你的警告:

warning C4488: 'MyShedluer::GetResult' : requires 'virtual' keyword
to implement the interface method 'IShedluer::GetResult'

the correct syntax for implementing an interface is to add virtual:

ref class MyShedluer:IShedluer
{
public:
  virtual array<Object^>^ GetResult(UInt64 taskId);
}

Also the compiler tells you this, look at your warnings as well:

warning C4488: 'MyShedluer::GetResult' : requires 'virtual' keyword
to implement the interface method 'IShedluer::GetResult'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文