Мне нужно синтезировать во время выполнения классы как прокси-сервер для лежащих в основе классов C++. Я уже знаю, как собирать методы и синтезировать с помощью шаблона magic, свободных функций C++, чтобы развернуться и вызвать соответствующий объект. Однако мне нужно знать, что прототип реализации методов со ссылками должен быть.Objective-C++: Как реализованы ссылки?
Вот конкретный пример:
Если у меня есть C метод ++, как это:
void set (string const& string , shared_ptr<Object> const& pObject) ;
Буквальный перевод в Objective-C++ (примечание: это не будет использовать дословный перевод, но есть другие, которые бы) было бы:
- (void) setObject:(shared_ptr<Object> const&)object forKey:(std::string const&)key ;
буквальный C IMP будет:
void MyFakeProxyClass_setObjectForKey (MyFakeProxyClass* self , SEL cmd , shared_ptr<Object> const& object , string const& key) ;
Но зная, как Objective-C использует вариации для передачи сообщений, эта функция не может принимать ссылку в качестве аргумента.
Значит, Objective-C++ конвертирует ссылки в указатели? Или что?
Любое понимание было бы принято с благодарностью!
Референции - это не что иное, как скрывающие указатели компилятора за вашей спиной. – Kevin