代码之家  ›  专栏  ›  技术社区  ›  el.pescado - нет войне

类实现接口作为C中的方法返回类型#

  •  0
  • el.pescado - нет войне  · 技术社区  · 15 年前

    在c中,是否可以将方法的返回类型定义为附加实现某些接口的类?

    例如,在gtk应用程序中,我希望有一个小部件来显示文档。我想提供这个小部件的几个实现-一个基于gecko,一个基于webkit,一个基于常规gtk.textview。显然,所有这些类都必须从gtk.widget继承(间接地)。我将声明一个所有这些小部件都将实现的接口。最后,我将创建一个工厂方法来创建适当的小部件,基于例如可用的库。工厂方法应该返回哪种类型?

    interface IDocumentView {...};
    
    class GeckoDocumentView : Gecko.Webcontrol, IDocumentView {...};
    
    class WebKitDocumentView : WebKit.WebView, IDocumentView {...};
    
    class BasicDocumentView : Gtk.TextView, IDocumentView {...};
    
    class DocumentViewFactory {
        static IDocumentView CreateView () {...};
    }
    

    documentviewfactory.createview方法的返回类型应该是什么?如果不能同时指定gtk.widget和idocumentview,应该是:

    • widget(基类),稍后将被强制转换为idocumentview?
    • idocumentview(interface),稍后将被转换为gtk.widget?

    编辑 -接口是否可以强制从特定基类继承?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Frank Krueger    15 年前

    我喜欢保留 平台代码 (属于GTK)的 我的密码 尽可能多。

    既然如此,我宁愿回去 IDocumentView .

    这样,您的代码将使用 文档视图 接口和平台管道代码可以使用 Gtk.* 类。

        2
  •  1
  •   user366312    15 年前