OcToF, здесь сидят люди, к которым на собеседование регулярно приходят ровно такие же "кандидаты" с запросами и не могут связать двух слов по делу.
Ты - нарушитель. Твои действия приводят к реакции остальных людей. Тебе ли о токсичности говорить?
OcToF, вот почему я спрашиваю.
Разработка ПО связана со строгим соблюдением большого ряда требований, стандартов, нормативов и регламентов.
Работа с инструментом C++ вообще от человека требует предельной педантичности и буквально догматизма в отношении стандарта языка.
Тебе не до соблюдения правил и правильного построения текста, это я вижу. Тебе ничего не мешало, но ты не стал читать правила и просто пошел нарушать их (П3.1, П3.2, П3.5, П3.6). Ты не стал утруждать себя формулировками и подачей текста в вопросе чтобы другие люди могли лучше тебя понять.
Тебе не нужен ответ на твой вопрос, ты не прикладываешь усилий для получения этого ответа.
Тебе незачем идти в гймдев, а особенно туда, где используют C++. Код ты будешь писать ровно так же, как текст своего вопроса, а значит ты не сможешь работать с C++.
OcToF, я задам тебе довольно простой и прямой вопрос. В моем вопросе нет подтекстов и тайных смыслов.
Тебе что-то мешало весь этот текст написать с соблюдением правил Русского языка?
Zupand, замечательно. Это пакет .NET C#. Ссылка на него приведена в том же руководстве по установке.
Это не то что тебе надо. Тебе нужен код из гитхаба, тебе нужно оформить этот код в проект студии, подключить этот проект в свое целевое решение, настроить зависимости между твоим проектом и добавленным проектом vosk. И только после этого у тебя должно все заработать.
Или не заработать если ты что-то сделал неправильно. В любом случае, план для тебя таков: тебе нужно научиться добавлять сторонний код в виде проектов в свое решение. Тебе нужно разобраться в типах проектов студии и выбрать правильный тип для библиотеки vosk. Тебе нужно разобраться в зависимостях между проектами студии.
Это все есть в документации MSDN.
Вадим Ушаков, не делается :)
Давай я тебе подскажу тогда по поводу std::variant[?].
Это, в общем смысле, то что тебе нужно. Он позволит тебе инициализацию так как ты привел в вопросе. Лишь с небольшими исправлениями.
Designated Initializer тебе здесь не нужен. union - тоже не нужен гарантированно. Из варианта ты всегда можешь достать индекс текущего активного типа. Это тебе может сильно упростить логику.
Zupand, это потому что вся необходимая тебе информация относится не к vosk, а к студии.
Поэтому я и пишу о том, что сперва нужно описать твои шаги по самостоятельной интеграции библиотеки.
Ты не написал сейчас о том, добавил ли ты проект vosk в зависимости своего кода и добавил ли ты вообще проект vosk в свое решение. LNK2019 прямо говорит тебе о том, что у тебя в коде используются объявления, а определений твой код не предоставляет.
Это означает что у тебя зависимости не настроены. И чтобы решить твою проблему, тебе нужно настроить зависимости в своих проектах.
Zupand, вот почему я спрашиваю.
Знакомый с C++ человек разбирается в системах сборки и в самую первую очередь в своем вопросе выдаст не свой код (который сейчас не нужен), а именно информацию о используемой системе сборки и свои шаги по самостоятельной интеграции библиотеки в свой проект.
Я не знаком с этой библиотекой, но могу сразу сказать что проблем с ее интеграцией у тебя быть не должно.
Насколько я смог понять, ты пользуешься студией. У тебя не должно составить особого труда перенести сборку из mingw в проект студии используя раздел "Compilation from source" руководства.
Вадим Ушаков , а как ты планируешь определять, какое из полей объединения является активным?
Потому что обращение к другому, неактивному, полю внесет в твой код UB.
Вадим Ушаков, да, это вариант.
Еще ты мог бы определить в структуре подходящий конструктор преобразования, в который нужно передать ссылку для ее инициализации.
Но я тебе сразу скажу что для тебя пока указатель будет более подходящим. Просто в виду оценки твоего текущего опыта работы с C++.
floppa322 , условная компиляция при объявлении полей класса - это, безусловно, весьма увлекательное и незабываемое приключение.
Сперва ты просто объявляешь поле под условным макросом. Потом к тебе приходит понимание что и весь код использования этого поля тоже надо обернуть в тот же самый условный макрос. А потом появляются побочные эффекты от включения и отключения условного кода. Потом при переключении условия начинает выясняться что тут и там код перестает транслироваться потому что устарел. Кое-как ты справляешься с тяготами стыковки кода между препроцессором и плюсами, как к тебе приходит блестящая мысль переписать это все на метакод!
И дальше все по новой, только уже жестче, потому что это не препроцессор.
Прямо твой псевдокод реализовать средствами языка нельзя. Только через генерацию кода.
Но я знаю как реализовать подобное поведение в шаблонах и без генерации.
Только тебе снова придется справляться с проблемой отсутствия поля в твоем классе и я бы хотел сперва узнать, как ты планируешь это обходить. Если у тебя, конечно, есть какие-либо соображения.
На основе твоих слов я просто выкину из своего ответа лишние части и оставлю нужное.
Letopisec, не забывай ставить упоминания когда пишешь ответ человеку. Иначе ты рискуешь никогда больше не получить ответ.
Я задал понятные для тебя вопросы? Ты ведь в состоянии на них ответить?
g hh , в чем конкретно заключается твой вопрос?
Имя переменной должно всегда отражать смысл существования этой переменной. Имя должно рассказывать читателю о том, для чего создано то, что этим именем названо. Какую функцию оно выполняет и для каких целей может быть использовано.
Функция имени - передавать читателю смысл. Не передающий свой смысл код должен быть удален или исправлен так чтобы он начал свой смысл передавать.
Ты - нарушитель. Твои действия приводят к реакции остальных людей. Тебе ли о токсичности говорить?