О "GUI в C # и код в C ++" - PullRequest
       15

О "GUI в C # и код в C ++"

1 голос
/ 02 июля 2010

Прежде всего, до сих пор все мои знания в области программирования были нацелены на консольные приложения, как и все, кто начинает изучать C и C ++. (2 языка, которые я знаю) Теперь я хочу прыгнуть в красивый графический мир.

Итак, я изучаю Windows Forms, у меня уже много головных болей, пытающихся понять язык, который он использует (весьма отличается от нативного C ++), но мне удалось сделать несколько вещей, таких как использование текстового поля и кнопок.

Хорошо, дело в том, что я читал во многих местах, что, чтобы избежать головной боли, пытаясь закодировать winforms в C ++, мне лучше "Построить GUI в C #, потому что это намного проще, и логика, и код на С ++ ". И это мой вопрос, я вообще не понимаю этого утверждения. Что это должно означать?

Кроме того, это C #, что похоже на C ++, чтобы подтвердить это утверждение? Потому что, если бы C # был слишком отличен от C ++, мне пришлось бы изучать весь язык C #

надеюсь, вы понимаете мои сомнения.

PD: Извините за мой плохой английский.

Ответы [ 6 ]

3 голосов
/ 02 июля 2010

Джоан, хотя, безусловно, можно разрабатывать приложения Front End на C # и логику на C ++, я считаю, что делать это таким образом - огромная трата усилий, поскольку вы только усложняете себя, не принося никакой реальной выгоды, поскольку можетекодируйте обе вещи на одном языке.

C # имеет много преимуществ по сравнению с C ++, и я лично использую в основном C #, но я ясно вижу многих программистов, которые любят C ++.

Теперь перейдем к вашему вопросу относительносходство между C ++ и C # ответ да и нет.Да, в том смысле, что синтаксис C # явно получен из C ++.Многие вещи, такие как циклы if и for, пишутся точно так же, поэтому, если вы знаете, как написать if в C ++, вы можете написать его на C #.

Разница (и критическая) заключается вкак работают языки.C ++ - это строго скомпилированный язык (он идет от кода C ++ к машинному коду).C # - интерпретируемый язык (он переходит от c # к MSIL и во время выполнения к машинному коду).В C # вы не можете использовать арифметику указателей без явного разрешения, в C ++ вы можете (и будете) использовать арифметику указателей.В C # есть сборка мусора, в C ++ нет.

В конце, как я сказал в первом параграфе, вы можете использовать оба языка для создания приложения, но это будет очень сложно.Я советую вам немного изучить C #, а затем решить, на каком языке вы бы предпочли построить приложение с графическим интерфейсом.Но даже на секунду не верьте, что C ++ не может быть использован для создания внешнего интерфейса, поскольку для этого существует множество инфраструктур.Одна из них, которую я помню из головы: Qt .

Другой вариант для вас - использовать "C ++ / CLI", который является разновидностью C ++ и может использовать .NET Framework (тот же самый фреймворк, в котором используется C #)

РЕДАКТИРОВАТЬ: Спасибо, Джерри, за указание на то, что Managed C ++ устарел, а C ++ / CLI - единственный!

1 голос
/ 02 июля 2010

Ну, это не прямой ответ, но надеюсь, что он вам поможет. Поскольку вы заявили, что , вы только что начали и хотите, чтобы C ++ сочетался с GUI , я предлагаю вам взглянуть на Qt . ИМО Я нашел C ++ и GUI легко в Qt. И это тоже хорошо.

1 голос
/ 02 июля 2010

Обратите внимание, что у вас есть родной C ++ и C ++ / CLI, первый - тот, который вы изучили, но второй - тот, который вам нужно будет использовать, если вы хотите объединить его с C # GUI. Тем не менее, я бы посоветовал вам держаться подальше от C ++ / CLI, потому что это вызовет много путаницы, если у вас нет твердой основы в C ++, C # и .NET.

Причина, по которой вы не можете использовать собственный C ++, заключается в том, что C # является управляемым языком, поэтому вам придется либо найти другой графический интерфейс, который подходит для C ++, либо вам придется использовать C # для всего. Для получения дополнительной информации об управляемых см. Часть среды Разница между C ++ и C # , статья также предоставит вам хорошее сравнение между ними.

1 голос
/ 02 июля 2010

Не очень сложно переключиться на новый язык.Несколько ключевых слов, которые вам нужно выучить, не являются проблемой.Что стоит больше всего энергии, если привыкнуть к новой среде и библиотекам классов.Это, вероятно, то, что вы имеете в виду, и это правда, вам понадобится некоторое время.

Теперь, перейдя к разделенному графическому интерфейсу в C # и коду в C ++, вам придется выполнять все привязки и сортировку параметров.если есть буферы и строки например.Я не думаю, что это сделает вашу жизнь легче.Взаимодействие с родным Dlls может стать некоторой болью.Однако, если вы используете сторонние dll и уже имеете большую работающую кодовую базу, вы можете попытаться скомпилировать логический код с включенной /clr.При этом создается DLL, которую можно использовать непосредственно из .NET.

ПРИМЕЧАНИЕ. WinForms устарела для новых приложений, рассмотрите возможность использования WPF.Он хорошо масштабируется, но кривая обучения может быть крутой для новичков.

1 голос
/ 02 июля 2010

C # имеет фигурные скобки, точки с запятой и использует концепцию классов.Он имеет синтаксис "производный от C", но в остальном очень отличается от C ++.Java на самом деле является предшественником C #, а не C ++.

Вы можете создавать GUI приложений с использованием C #, а затем использовать различные методы вызова в C ++ (например, P / Invoke).Если вы не используете много существующих библиотек или ищете абсолютную производительность, это будет головной болью.

Если вы ищете примеры современных графических интерфейсов Windows, использующих C ++, взгляните на Hiloпример программы.

0 голосов
/ 02 июля 2010

Хотя это не прямой ответ на вопрос, который вы задаете, я сначала предупреждаю, что WinForms уже в основном тупиковые, поэтому для нового кода вам будет гораздо лучше избегать их. Если вы собираетесь создавать графический интерфейс в .NET, в настоящее время предпочтительным вариантом является WPF.

Некоторые люди считают C # более простым способом создания графического интерфейса. Совершенно верно, что Microsoft предоставляет значительно больше возможностей Wizards, и это позволяет делать это практически без программирования, если вы используете .NET для этой работы. Другие люди (особенно те, у кого больше опыта в этом) могут быстро создать графический интерфейс на C ++ (или даже чуть больше), используя вместо этого C ++.

Смешивание таких языков может хорошо работать в относительно больших проектах, где у вас есть совершенно отдельные группы людей, работающих над разными частями. Для небольших проектов, в которых одни и те же люди обычно работают над обеими частями, разница в синтаксисе находится примерно на худшем возможном уровне - недостаточно разных, чтобы по-настоящему переключать передачи и думать по-разному, но все же достаточно разных, чтобы вы не могли планировать только набирать вещи и надеяться на их компиляцию. В общем, вам обычно намного лучше выбрать один язык и придерживаться его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...