Как сделать "композицию из c ++" в c ++ / cli - PullRequest
0 голосов
/ 24 марта 2011

Я столкнулся с проблемой при создании контейнеров в c ++ / cli.У меня есть два класса. Один - это класс каталога с членом данных «System :: string ^ path», а другой класс - «file» с элементом данных «System :: String ^ name».Теперь идея такова: каталог содержит файл (композицию), а также каталог может не иметь никакого файла (динамизм).Я могу создать наследственное отношение, но, очевидно, это не имеет никакого смысла.Поэтому мне нужна небольшая помощь о том, как создать описанную выше взаимосвязь между двумя классами.

Моя вторая проблема: я делаю проект, который индексирует все содержимое указанного пути, а затем предлагает различные методы поиска.. Одним из этих методов является «поиск по слову».Я буду ограничивать его примерно 20 заранее определенными словами. Теперь мне нужно открыть файл (скажем, файл doc) в консоли, а затем выполнить сравнение строк.Но я понятия не имею, как открыть файл в консоли, а также как выполнить сравнение (я представляю, как файл doc будет рассматриваться как файл, созданный с помощью консоли, и как слова будут преобразованыв System :: String).

Надеюсь, я получу некоторую помощь от вас, люди :).Одна просьба: будьте добры, не рассматривайте сторонние программы как решения, поскольку я не могу их использовать (библиотеки BOOST и Dirent.h ...)

1 Ответ

0 голосов
/ 24 марта 2011

У вас есть 2 класса «Каталог» и «Файл». Класс «Каталог» может иметь другие объекты «Каталог» и «Файл».

В некоторых случаях объекты класса «Каталог» и объекты «Класс файла» рассматриваются как одно и то же понятие , как элемент, содержащийся в «Каталоге».

Следовательно, в какой-то момент они действуют так, как будто они из одного класса .

Итак, почему бы вам не создать базовый класс с именем «FileSystemItem», а «Directory» и «File» являются подклассами «FileSystemItem». Добавьте функцию в «FileSystemItem» (перечисляемую), которая возвращает, когда вы хотите узнать, является ли элемент одним или другим.

Класс «Каталог», есть методы для добавления любого «FileSystemItem».

Затем вы создаете экземпляр объекта «Каталог» и добавляете элементы для просмотра других каталогов или файлов. Позже вы читаете предметы и проверяете, что они из себя представляют.

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