Я занимаюсь переносом приложения Objective-C на C++ и решил создать класс, аналогичный NSObject и NSDictionary. Если вы не знакомы с этой системой, NSObject — это объект, который все объекты наследуют в Obj-C, а затем в нем есть механизм подсчета ссылок. Когда ссылок больше нет, объект освобождается.
В моем коде я хотел бы иметь возможность сделать следующее
CMDictionary["Key"] = Object;
Внутренне это хранится как
Map<string, CMObject*> mDictionary
Всякий раз, когда новый объект присваивается объекту, словарь должен сохранить этот объект, вызвав его функцию сохранения, а также вызвав освобождение любого объекта, который этот новый объект мог заменить. Моя проблема связана с тем, что я не могу найти способ запустить код и определить, когда скобки используются в задании, поскольку я не хотел бы, чтобы функция сохранения вызывалась, когда я писал что-то вроде
CMDicionary["key"]->StringValue();
Будет ли в любом случае это делать, или мне нужно будет просто использовать функции getter/setter для изменения моего словаря
NSObjectнаstd::shared_ptr<>иNSDictionaryнаstd::unordered_map<>. То, как вы пытаетесь это сделать, было бы в лучшем случае неудобным правильно отслеживатьCMObject*, которые вы должны выделить и выделить (как вы, кажется, обнаруживаете, очевидно из ваших ответов на текущие ответы). - person ildjarn   schedule 14.07.2012