Сообщение 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++, т.е. нужно писать свои классы типа:
2) Забили на Object использовали например boost::any т.е. теперь Current() например возвращает boost::any и вообще везде в коде где Object то boost::any
Соответсвенно boost::any_cast и метод boost::any::type() который typeid возвращает, что бы например можно было проверить лежит ли там такой тип.
Ну еще я думаю boost::shared_ptr, использовали наверно его тоже в полный рост. Если например проблем с циклическими ссылками нет.
Вот такого рода вопросы.
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++, т.е. нужно писать свои классы типа:
2) Забили на Object использовали например boost::any т.е. теперь Current() например возвращает boost::any и вообще везде в коде где Object то boost::any
Соответсвенно boost::any_cast и метод boost::any::type() который typeid возвращает, что бы например можно было проверить лежит ли там такой тип.
Ну еще я думаю boost::shared_ptr, использовали наверно его тоже в полный рост. Если например проблем с циклическими ссылками нет.
Вот такого рода вопросы.
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, использовали наверно его тоже в полный рост. Если например проблем с циклическими ссылками нет.
Вот такого рода вопросы.