2014-10-04 3 views
-5

как название указано. Есть ли функция в C++, эквивалентная «блоку» в объекте c? спасибо.Есть ли функция в C++, эквивалентная «блоку» в объекте c?

+0

В случае, если вам интересно, ваш вопрос был, вероятно, вниз проголосовали, потому что это было бы очень легко чтобы ответить быстрым поиском google. – michaelsnowden

+0

@doctordoder Я не могу согласиться с этим. Чтобы ответить на этот вопрос (поскольку мне вполне комфортно с C++), я начал читать о _blocks_. И я должен признать - я не могу найти, что такое «_block_». Единственное, что я могу найти, это «как определить блок_», что не совсем полезно в данном конкретном случае. На самом деле мне потребовалось некоторое время, чтобы выяснить, что «_a-блок - это автономный, автономный фрагмент кода, существующий всегда в рамках другой структуры программирования, как, например, тело метода_», что означает его просто обычный код фрагмент ... Я потратил слишком много времени на этот вопрос: | –

+0

@ PawełStawarz Google «что такое блок в объективе c», а первая ссылка - https://developer.apple.com/library/ios/documentation/cocoa/conceptual/programmingwithobjectivec/WorkingwithBlocks/WorkingwithBlocks.html. Вот цитата из первого абзаца, в которой вы, будучи настолько удобной с C++, должны понимать: «Блоки являются объектами Objective-C, что означает, что они могут быть добавлены в коллекции, такие как NSArray или NSDictionary, а также возможность захватывать значения из охватывающий объем, делая их похожими на замыкания или лямбда на других языках программирования ». – michaelsnowden

ответ

0

Это нестандартное расширение до С, и это замыкание на lambda функций, в основном они безымянные функции, как объекты, приложив код, который может быть вызван. Они облегчают запись, например, управляемый событиями код, где обратные вызовы используются исчерпывающе. См this

1

Да, вы можете использовать функцию зЬй :: (лямбда-функции) в C++ 11. Эти функции работает как блоки в Objective C

Определение

typedef std::function<void(std::string message, bool status)> LoginCallback 

Использование в классах функций

void loginUser(std::string email, std::string password, LoginCallback loginCallback) 

Предполагая, что выше функции находится в LoginClass

Вызов функции

loginClassObj.loginUser("[email protected]", "password", [this](std::string message, bool status){//Callback will received here}); 
Смежные вопросы