хочу индексаторы в c++
От: ershov-jan  
Дата: 25.05.05 11:35
Оценка:
Написал достаточно большую программу на C# для расчёта достаточно ресурсоёмкой задачи. Хотелось бы её несколько оптимизировать, то есть, вычислительную часть переписать на c++ с дальнейшей перспективой перегнать программу в Windows native code, да так, чтобы минимально изменять код, уже написанный на с#. Вроде бы общей концепции .NET это не протоворечит, да только возникла одна большая проблема: почти в каждом классе, написанном на c#, используются индексаторы. То есть, переписав один класс на cpp, вероятно, придётся переписывать весь код на c#, использующий этот класс.
Вопрос такой: как объявить индексаторы в c++.net? Можно ли это как-нибудь сделать?
хочу индексаторы в c++
От: Аноним  
Дата: 25.05.05 19:00
Оценка:
Сначала нужно создать индексируемое свойство. Делается это в MC++ путём объявления метода (ов) с именем get_<имя свойства> (set_<имя свойства>), с модификатором __property.
Однако, C# не поддерживает индексируемые свойства, поэтому ему нужно сообщить, что это свойство является ещё и свойством по умолчанию. Делается это с помощью атрибута System.Reflection.DefaultMemberAttribute.

Пример:
 [ System::Reflection::DefaultMember( "Item" ) ]
 public __gc class MyClass
 {
 public:
  __property int get_Item( int index )
  {
   return 5;
  }
  __property void set_Item( int index, int value )
  {
  }
 };

Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
хочу индексаторы в c++
От: Аноним  
Дата: 25.05.05 19:10
Оценка:
Внёс вопрос в FAQ. Вот здесь.

Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.