Probleme ein Interface zu implementieren



  • Hallo, ich habe folgendes Problem:

    Ich implementiere in C++/CLI ein in C# geschriebens Interface, das u.a. diese Eigenschaft enthält:

    public interface IVideoAdapter
    {
      /// <summary>
      /// Des Name des Decoders.
      /// </summary>
      string Name
      {
         get;
      }
    ....
    

    nun habe ich in C++/CLI eine Klasse, welches dieses Interface implementiert:

    public ref class MxPEG_Details : IVideoAdapter
    {
      virtual property String^ Name
      {
        String^ get()
        {
           return gcnew String("MxPEG");
        };
      };
    ....
    }
    

    Wenn ich das nun kompiliere, sagt mir VS05 das ich in der Klasse die Eigenschaft Name wegen dem Interface implementieren müsste:

    Fehler 1 error C3766: "MxPEG_Details" muss eine Implementierung für die System::String ^IVideoAdapter::Name::get(void)-Schnittstellenmethode bereitstellen. c:\...\MxPEG_Details.h 37

    Eigentlich habe ich soetwas schon oft gemacht und es hat auch immer funktiopniert, nur warum geht das jetzt nicht mehr? Wo mache ich den Fehler??

    Gruß David



  • Ok, durch C# war ich gewohnt das alle Member von Schnittstellen automatisch public sind, das sind sie bei C++ natürlich nicht *g*

    Trotzdem danke 🙂



  • erm, zu diesem Thema mal ne dumme andere Frage:
    Wie definiere ich in C++/CLI eigentlich Interfaces, welche ich dann z.b. in C# verwenden kann?
    Gibts in C++/CLI ein interface-Keyword oder sind des auch abstract classes oder so?



  • public interface class foo
    {
    public:
        virtual void bar() abstract;
    };
    


  • jo, habs schon gefunden so weit, ^^ also selber ausprobiert 😃
    nur irgendwie hat auch

    public interface class IDoSomething
    {
       public:
       void doIt();
    };
    

    geholfen, komischerweise ohne virtual und abstract, wundert mich zwar auch, aber ich denke durch die deklaration als "interface" wird es automatisch als virtual angesehen
    aber danke so weit.
    Außerdem hatte ich auch kein public vor der Klasse, da ich das ganze nicht von C++ gewohnt war. Jetzt gehts schon, aber ich brauchs im Allgemeinen gar nicht, von daher ist meine Frage eigentlich deprecated ^^


Log in to reply