строка не объявлена в области видимости

16

Я пытаюсь заставить функцию to_string(NUMBER) работать на моем компьютере Ubuntu в течение нескольких недель, но никогда не работает в среде QT или где-либо еще. Мой код отлично работает на моем Mac OSX, но когда я пытаюсь запустить его в Ubuntu, он жалуется, что to_string не объявлен в области видимости. Любые решения для этого были бы весьма полезны. Я попытался обновить компилятор gcc, но это не устранило проблему. Пожалуйста помоги.

Я использую QT Creator 4.8.1, и я использую С++ и последнюю версию Ubuntu.

int Bint::operator*(int temp){
    Bint b(to_string(temp));
    return ((*this)*b);
}

Мне не хватало QMAKE_CXXFLAGS + = -std = С++ 0x в файле pro.

  • 2
    Вы должны опубликовать часть кода, который у вас есть, чтобы мы могли взглянуть на него. Как вы называете это to_string() ?
  • 0
    Вы добавили QMAKE_CXXFLAGS += -std=c++0x в файл .pro?
Показать ещё 6 комментариев
Теги:
qt-creator

3 ответа

14

Могут быть разные причины, по которым это не сработает для вас: возможно, вам нужно квалифицировать имя с помощью std::, или, возможно, у вас нет поддержки на С++ 11.

Это работает, если у вас есть поддержка на С++ 11:

#include <string>

int main()
{
  std::string s = std::to_string(42);
}

Чтобы включить поддержку С++ 11 с помощью g++ или clang, вам необходимо передать опцию -std=c++0x. Вы также можете использовать -std=c++11 в новых версиях этих компиляторов.

  • 4
    Если что-то не так с этим ответом, я хотел бы знать, чтобы я мог это исправить.
9

вы должны скомпилировать файл с поддержкой С++ 11

g++ -std=c++0x  -o test example.cpp
  • 0
    Ubuntu еще не имеет C ++ 11?
  • 0
    @MattMcNabb да, это так, но это зависит от того, какая у вас версия ubuntu и gcc
Показать ещё 1 комментарий
2

Я исправил эту проблему, изменив первую строку в Application.mk из

APP_STL := gnustl_static

к

APP_STL := c++_static

Ещё вопросы

Сообщество Overcoder
Наверх
Меню