Xcode 11 Objective C ++ - не может отделить реализацию от заголовка в проекте ObjectiveC ++ - PullRequest
1 голос
/ 24 января 2020

Я создал стандарт Xcode Objective- C Project, желающий протестировать интеграцию с C ++. Я переименовал свой файл в соответствии с .mm et c.

. Я создал класс C ++ с заголовком .hpp и файлом. cpp imp. Это заголовок

class a {
private:
   int anInt = 1;
public:
    int getAnInt();
};

Это имп

#include "PrismMatricies.hpp"

int a::getAnInt() {return anInt;}

в моем файле ViewController.mm. Я делаю это после импорта заголовка .hpp

a ar;
NSLog(@"Some Log %i", ar.getAnInt());

Код ошибки сборки в Xcode = неопределенный символ: a :: getAnInt ()

Если я перемещу определение функции внутри заголовка следующим образом

class a {
private:
   int anInt = 1;
public:
    int getAnInt();
};

int a::getAnInt() {return anInt;}

Проект работает

Может кто-нибудь объяснить это мне, поскольку я просто не понимаю

1 Ответ

2 голосов
/ 24 января 2020

Обратите внимание, что "неопределенный символ" - это ошибка ссылки, а не ошибка компиляции, и ваш код, безусловно, выглядит правильно.

Вы получите эту ошибку, если ваш. cpp не будет связан с вашим построить цель. Убедитесь, что он включен в список «источников компиляции» вашей целевой сборки. (Вы также можете проверить, установлен ли флажок целевого членства на панели утилит File Inspector.)

...