Пишу на c++. Изучил Qt, и .NET, и вот подумал, Qt только для KDE(linux), а на windows чистая .NET программа. Решил для этого сделать свои классы кроссплатформенными так, чтобы один и тот же код выдавал или чистый .NET(то есть все классы управляемые) код или чистый Qt\С++ код, то есть почти полностью отказаться от стандартной библиотеки. Но плата за кроссплатформенность высока, иногда даже не знаешь как будет вести себя код. Приходится тщательно рассматривать множество мелочей.
Вопрос: имеет ли смысл в .NET(C++\CLI) делать классы управляемыми, или просто делать управляемые обертки на обычные неуправляемые классы(модель программы)? Но в таком случае компилятор выдаст managed и unmanaged код. Где вызовы между ними будут медленными, и вообще, чистота кода испортится. Также там будут внешние зависимости, отличные от dll'ок .NET'а
Рассмотрим две программы: одна будет использовать некую свою библиотеку для расчётов, а в другой будет мало своего кода, но будет много вызовов .NET фреймворка. Где выгоднее использовать чистый .NET и где смешанный? Может .NET и Qt использовать чисто для интерфейса, а саму логику на крестах делать? Но тогда придется тащить за собой всякие библиотеки типа boost и тому подобных, да и размер программы увеличится.
По поводу Qt для windows и linux: в втором всё хорошо, но в первом приходится тащить за собой Qt библиотеки на несколько метров, и вообще, зачем отвергать инструмент, созданный специально для ОС,- .NET?
Самое главное не выражайте подобные мысли на работе. Ни в слух, ни письменно, ни как. В середине первого предложения руководитель вас уволит, если повезет то на втором. Ближе к концу и до рукоприкладства дойти может.
Вы вес .NET библиотек смотрели? И их поддержку в страшно устаревшей, но по-прежнему распространенной в реальной жизни ХР?
Вопрос звучит так, как будто вы сами не понимаете, что вам нужно. Мешать кроссплатформенную библиотеку с дотНетом - значит потерять достоинства и того, и другого. А главное - ЗАЧЕМ?!
j64: вы, в частности, неправильно понимаете достоинства дотНета. Их два: скорость написания кода, благодаря высокому уровню языка, и тесная интеграция с Microsoft-решениями. Если именно эти достоинства вам некритичны или вы их нарушаете примешиванием другого языка - скорее всего, дотНет вам в принципе не уперся.
Adamos: так я это всё понимаю, я стремлюсь к "тесной интеграции с microsoft решениями". А про скорость написания - я могу на c++/cli общие части программы писать(делать из них библиотеку классов), а конечную программу на c# делать
c++/cli вполне себе язык среды clr, ничем не нарушающий чистоту
Qt -- кроссплатформенная библиотека. Зачем делать что-то своё, если все уже сделали за вас? Представьте, что вам внезапно захотелось портировать приложение еще и на Mac... Будете снова делать свои классы кроссплатформенными, или просто напишите один раз на Qt и это будет работать везде и одинаково в 95% случаев? Выбор за вами в общем.
Хочу чтобы всё работало в одной, родной экосистеме. Например людям не нравится использовать gtk, когда у них стоит kde, люди хотят qt аналог. Также в моём случае можно использовать специфичные функции каждой библиотеки, например тот же ribbon в .net'е
Думаю, что люди хотят использовать функциональность программы, а не программу написанную с применением каких-то технологий. Пользователю конечного продукта это не важно.
Посмотрите в сторону QML и стилей Qt. По-моему аналог ribbon (это как в Word'е да? я под винду не пишу просто :) ) не слишком сложно на QML сделать или даже найти. Зато потом он будет везде работать.
Глупость какая-то несусветная: впихнуть не впихуемое :-(
... смешать кросплатформенную Qt с каким-то непотребным .NET ... вы бы хоть тему тегом Windows отмечали, а то C++ ... при чём тут C++ вообще?