我想实现的是同时实现了一个C++/CLI类IList
和IList
.
由于它们具有重叠的名称,我必须明确地实现其中一个,并且自然选择应该是IList.
索引器的隐式实现是:
using namespace System::Collections::Generic; genericpublic 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'
任何提示?
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; }