2016-09-15 3 views
-5

Поскольку std :: to_string не работает для меня, и так как я работаю над очень сложной средой на данный момент (я работаю на Android, используя эмулятор терминала Linux), я решил оставить его сломанным и использовать вместо него пользовательскую функцию (я нашел его в Интернете).std :: объект stringstream непризнанный в функции замены std :: to_string

Вот точный код, я использую:

#include <sstream> 

namespace patch { 
    template <typename T> 
    std::string to_string(const T &n); 
     std::stringstream stm; 
     stm << n; 
     return stm.str(); 
    } 
} 

Я компиляции с помощью этих тегов:

g++ -std=c++11 -g -Wall -Wextra -pedantic 

И я получаю эти ошибки:

unknown type name 'stm'; did you mean 'tm'? 
       stm << n; 
       ^~~ 

(тогда в примечании tm объявлено где-то в include/time.h)

expected unqualified-id 
       return stm.str(); 
       ^

А затем также ошибка «посторонней замыкающей скобки» для последней фигурной скобки, которая закрывает скобки пространства имен.

Как я понимаю, он не распознает строку stm << n; как метод operator <<, используемый на объекте std::stringstream, но вместо этого, как некоторая переменная, по какой-либо причине.

Почему именно я получаю эти ошибки? Есть ли способ их исправить? Если нет, что я могу использовать для замены даже этого решения?

+3

ли вы включить ? У вас также отсутствует открывающая скобка для функции, и после нее не должно быть точки с запятой. –

+0

Я почему-то сомневаюсь, что с 'std :: to_string' было что-то не так. – Biffen

+0

@Retired Ninja ouch. Я скопировал и вставил пространство имен из декларации в определение, и я забыл изменить его, я думаю. В любом случае да, '' был включен, и нет, 'std :: to_string' не был найден нигде. – user6245072

ответ

0

Похоже, у вас есть точка с запятой, где левая фигурная скобка должна быть, чтобы открыть область видимости функции