@shvedovea

C++/CLI как располагаются методы?

1. К примеру есть файл .cpp, в нем есть метод, который не относится не к какому пространству :method(wchar_t ch) { .. } куда этот метод по факту может относиться, если переводить его на c#, создание отдельного статического класса для таких групп методов?
2. Есть класс, он описан и тд, но я заметил в нем есть "вызова" методов, без всякого описания, то есть даже значения не передаются
static Class^ FromString(String ^ Source, keyType type, bool surround);
но эти методы описываются ниже класса не в каком либо namespace
namespace::class::method(String^ mng_str_ref, keyType type, bool surround) { ... }
как это работает например в c#? не могу сопоставить такую работу, похоже чуток на работу интерфейса, аналог что в классе описали такой методв, где то вне namespace его реализовали... Бред какой то.
Помогите понять работу
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Судя по всему, у тебя очень слабо с синтаксисом C++. В C++ есть два важных термина: объявление(declaration) и определение(definition).

При объявлении сущности достаточно указать только ее внешний вид и опустить детали внутренних свойств.
Определение сущности подчиняется ODR (One Definition Rule) - правилу одного определения.
One Definition Rule гарантирует нам детерминизм любого используемого в коде типа, любой функции, любой переменной в рамках одной области видимости (но не в разных).
Это правило позволяет сказать, что свойства программы однозначно определены до процесса трансляции и не изменяются после него.

К примеру есть файл .cpp, в нем есть метод, который не относится не к какому пространству

Это не метод. Это глобальная функция. Она объявлена в глобальном пространстве конкретного модуля трансляции. Это просто объявление чтобы функцией можно было пользоваться не нарушая ODR.

Есть класс, он описан и тд, но я заметил в нем есть "вызова" методов, без всякого описания, то есть даже значения не передаются

Класс не описан, а определен. И снова, там не методы, а статические функции. Статические функции не описаны, а объявлены. И они не без описания, а без определения по месту.
А далее ты уже видишь определение статический функций в конкретном модуле трансляции.

Как тебе быть для переноса этого добра в C#? Постарайся понять логику и выразить ее в терминах C#. :)
Статические функции тебе и там тоже доступны. Но у тебя в C# нет разделения на объявление и определение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы