当前位置:  开发笔记 > 编程语言 > 正文

C++/CLI:实现IList和IList <T>(显式实现默认索引器)

如何解决《C++/CLI:实现IList和IList<T>(显式实现默认索引器)》经验,为你挑选了1个好方法。

我想实现的是同时实现了一个C++/CLI类IListIList.

由于它们具有重叠的名称,我必须明确地实现其中一个,并且自然选择应该是IList.

索引器的隐式实现是:

using namespace System::Collections::Generic;
generic public ref class MyList : public System::Collections::IList, IList {
  // ...
  property InnerT default[int]{
    virtual InnerT get(int index);
    virtual void set(int index, InnerT item);
  }
}

我现在正在尝试声明IList的默认索引器.

我的猜测是这样的:

  property Object^ System::Collections::IList::default[int]{
    virtual Object^ System::Collections::IList::get(int index);
    virtual void System::Collections::IList::set(int index, Object^ item);
  }

但那只是给了我

错误C2061:语法错误:标识符'default'

任何提示?



1> Rasmus Faber..:

JaredPar的答案几乎奏效了.应该改变两件事:

indexer-property需要一个不同的名称,因为隐式实现已经采用了"default".

覆盖的规范需要在set-和get-methods上完成,而不是在属性本身上完成.

即:

  property Object^ IListItems[int]{
    virtual Object^ get(int index) = System::Collections::IList::default::get;
    virtual void set(int index, Object^ item)  = System::Collections::IList::default::set;
  }

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有