Objective-C является подмножеством C, и поэтому ничего C будет работать с ними. Тем не менее, std::vector
является классом C++, что означает, что компилятор должен знать, что вы собираетесь использовать C, Objective-C и код C++ внутри вашей программы. Вы можете сделать это, изменив расширение ваших исходных файлов с .m
на .mm
.
Однако, если вы все еще находитесь на этапе обучения Objective-C или C++, старайтесь не смешивать с ним слишком много C++. C++ использует «не-POD-типы» (POD - «простые старые данные»), которые по своей сути несовместимы с функциями, которые принимают вариативные аргументы; под капотом, все Цели-C-вызовы работают таким образом, что может затруднить работу с типами C++ с помощью вызовов Objective-C, если вы не слишком уверены в том, как все это работает. Вы также можете использовать класс Cocoa NSMutableArray
.
Векторы от C++, а не C. Это имеет много последствий. – zneak
'#include' is C++, а не C. –
nmichaels