Информация об изменениях

Сообщение Re[2]: C# -> С++ от 04.09.2014 8:51

Изменено 04.09.2014 8:52 nen777w

N>>Но может кто знает реальный опыт который можно было бы почтитать, посмотреть как делали другие.
MTD>Я писал транслятор с шарпа в плюсы. Использовал сборщик мусора и либу для разбора шарповых проектов.
Круто, а как это потом использовалось?

MTD>Ты задай вопрос поконкретней, попробую помочь.

Да есть. Ну вот например. Возьмём класс List он наследует IEnumerable, ICollection ну и т.д.
Как Вы поступали когда писали свой проект?
Т.к. методы типа Current() в C# вовзращают Object то что делали вы:
1) Писали базовый Object (но тогда возникает невозможность применения POD типов C++, т.е. нужно писать свои классы типа:

struct Int : Object {
   explicit Int(int n) : val( n ) {}
   int operator=(int n) { val = n; }
   operator int() const { return val; }
   System::String ToString() const {...}
 ... ну еще до кучи всяких операторов
};


2) Забили на Object использовали например boost::any т.е. теперь Current() например возвращает boost::any и вообще везде в коде где Object то boost::any
Соответсвенно boost::any_cast и метод boost::any::type() который typeid возвращает, что бы например можно было проверить лежит ли там такой тип.

Ну еще я думаю boost::shared_ptr, использовали наверно его тоже в полный рост. Если например проблем с циклическими ссылками нет.

Вот такого рода вопросы.
Re[2]: C# -> С++
N>>Но может кто знает реальный опыт который можно было бы почтитать, посмотреть как делали другие.
MTD>Я писал транслятор с шарпа в плюсы. Использовал сборщик мусора и либу для разбора шарповых проектов.
Круто, а как это потом использовалось?

MTD>Ты задай вопрос поконкретней, попробую помочь.

Да есть. Ну вот например. Возьмём класс List он наследует IEnumerable, ICollection ну и т.д.
Как Вы поступали когда писали свой проект?
Т.к. методы типа Current() в C# вовзращают Object то что делали вы:
1) Писали базовый Object (но тогда возникает невозможность применения POD типов C++, т.е. нужно писать свои классы типа:

struct Int : Object {
   explicit Int(int n) : val( n ) {}
   int operator=(int n) { val = n; }
   operator int() const { return val; }
   System::String ToString() const {...} (это если String тоже написан)
 ... ну еще до кучи всяких операторов
};


2) Забили на Object использовали например boost::any т.е. теперь Current() например возвращает boost::any и вообще везде в коде где Object то boost::any
Соответсвенно boost::any_cast и метод boost::any::type() который typeid возвращает, что бы например можно было проверить лежит ли там такой тип.

Ну еще я думаю boost::shared_ptr, использовали наверно его тоже в полный рост. Если например проблем с циклическими ссылками нет.

Вот такого рода вопросы.