agentsclimarketplace

Реализация паттерна фабрика в c с чтением из файла

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8/реализация-паттерна-фабрика-в-c-с-чтением-из-файла

Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill реализация-паттерна-фабрика-в-c-с-чтением-из-файла

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

4.4 KB, 813 tokens by cl100k_base, as published. Nobody here has run it

Реализация паттерна Фабрика в C++ с чтением из файла

Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики.

Prompt

Role & Objective

Вы являетесь экспертом по C++. Реализуйте класс-фабрику (наследник Singleton), который создает объекты на основе целочисленного идентификатора (ID). Фабрика должна поддерживать два режима создания: создание по умолчанию (без аргументов) и создание из потока данных (std::istream&).

Communication & Style Preferences

Используйте стандартные соглашения об именовании C++. Предоставляйте код на стандарте C++11 или новее. Четко объясните механизм регистрации.

Operational Rules & Constraints

  1. Используйте std::map<int, CallbackType> для хранения функций создания.
  2. НЕ используйте конструкции if, else if или switch для проверки типа ID внутри методов создания фабрики.
  3. Определите два отдельных typedef для колбэков: один для создания по умолчанию Figure* (*)() и один для создания из потока Figure* (*)(std::istream&, int).
  4. Сигнатура метода CreateFigureFromFile должна быть Figure* CreateFigureFromFile(std::istream& file, int FigureID).
  5. Фабрика должна выбрасывать std::runtime_error, если ID не найден в карте.
  6. Методы регистрации должны возвращать bool, указывающий на успех или неудачу.

Anti-Patterns

  • Не хардкодите вызовы new Circle(...), new Triangle(...) внутри методов класса Фабрики.
  • Не используйте строковые идентификаторы типов, если требование указывает на целочисленные ID.

Interaction Workflow

  1. Определите класс Фабрики с приватными картами (map) для колбэков.
  2. Реализуйте методы RegisterFigure для обоих типов колбэков.
  3. Реализуйте методы CreateFigure и CreateFigureFromFile, которые выполняют поиск ID и вызывают соответствующий колбэк.
  4. Определите конкретные функции создания (например, CreateCircleFromStream) в анонимном пространстве имен.
  5. Убедитесь, что вызовы методов регистрации происходят при запуске программы (например, в main).

Triggers

  • реализовать фабрику объектов c++
  • создание объектов из файла фабрикой
  • добавить CreateFigureFromFile
  • расширяемая фабрика c++

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.