2013-04-07 2 views
1

Я пытаюсь объявить функцию, возвращающую строку в заголовочном файле, потому что я буду называть это из object-c. в принципе это сработает, не так ли?Объявление функции, возвращающей строку в C++

std::string myFunction(); 

, но оно вызывает сообщение об ошибке «Ожидается»; после объявления верхнего уровня ", много раз искал, все предлагали помещать #include в заголовочные файлы, я пробовал это, но, тем не менее, он не работает, на этот раз он выдает другое сообщение об ошибке" 'string' file not found ".

есть другой функция возврат двойной и проблем нет.

double doSomething(double a); 

-

#include <string> 

не работает, бросает сообщение ошибки говоря "файл 'строка' не найден". попытались создать новый проект на случай, если мой может быть поврежден, но он не работает, я должен что-то добавить в пути поиска и т. д.?

enter image description here

наконец я сделал это. Решение: изменили параметры «Скомпилировать источник как» на Objective-C++ в разделе «Настройки сборки/Apple LLVM Compiler 4.2», и это сработало как шарм.

+0

Можете ли вы показать нам свою попытку '# include'? –

+2

Если ваш компилятор не находит '', то либо вы не используете компилятор C++ (например, gcc может вести себя как чистый компилятор C в зависимости от его аргументов), либо вы ошибочно установили или неправильно сконфигурировали вашу среду IDE. Ищите файл 'string' вручную на вашем компьютере (у него нет суффикса имени файла) и проверьте путь к файлу include, настроенный в вашей среде IDE. –

+0

#ifdef __cplusplus extern «C» ..... работает, это почему предположить, что это не проблема компилятора. но я заметил что-то. если это чистый проект C++ без проблем, когда я свяжу C++-заголовок с Obj-c, он начинает бросать ошибку около . – mohacs

ответ

3

По крайней мере, вы должны включить заголовок стандартной библиотеки C++ string, где объявлен класс std::string (на самом деле это typedef для шаблона класса, но это другое дело).

#include <string> 

std::string myFunction(); 

Вы также должны убедиться в том, чтобы использовать include guards в своих заголовках.

1

Вы пропустили заголовочный файл:

#include <string> 
1

Вы должны помнить, что ObjC файлы построены на C не C++, если вы хотите использовать C файл ++ в Objective-C вы должны изменить расширение файл ObjC от .m до .mm, чтобы сделать его файлом ObjC++, иначе он будет похож на попытку включить заголовки C++ в файлы C.

+0

да я изменил расширение на .mm – mohacs

Смежные вопросы