2013-09-14 2 views
0

Я использовал std :: unique_ptr в своих предыдущих кодах в предварительном просмотре Visual Studio 2013, и у меня там нет проблем. Для моего недавнего случая проекта, это ошибка компилятора менее при отладке в визуальной студии 2012. Так что теперь я только получил следующие ошибкиОшибка компилятора unique_ptr из-за импорта кодов из VS2013 для предварительного просмотра VS2012

Это линия, которая, имеющий вопрос:

std::unique_ptr<MyClass> classHolder; 

Ниже то, что компилятор говорит

  • 'unique_ptr': не является членом 'Std'

  • синтаксическая ошибка: отсутствует ';' до '<'

  • отсутствующий тип спецификатор - предполагаемый int. Примечание: C++ не поддерживает
    default-int

  • неожиданный токен (ы), предшествующий ';'

Любая мысль о том, как я могу решить эту проблему?

Пример:

#include <memory> 
#include <string> 
#include <sstream> 
#include <boost/weak_ptr.hpp> 
#include "JSAPIAuto.h" 
#include "MyClass.h" 

#ifndef H_CLASSHAVINGPROB 
#define H_CLASSHAVINGPROB 

class ClassHavingProb : public FB::JSAPIAuto //ClassHavingProb: this is the wrapper class if you are familiar with FireBreath(C++ to Javascript) 
{ 
public: 
    ClassHavingProb() 
    { 
     obj = std::unique_ptr<MyClass>(new MyClass(1)); 
//MyClass: this is the class reponsible for the functionalities, I've used unique_ptr so that class lifecycle will not be very problematic. If I used a regular pointer the class is not properly dismissed. 
     //Some more init codes here 
    } 

    ~ClassHavingProb() { 
     obj.release(); //the class must be dismissed 
    } 

private: 
    std::unique_ptr<MyClass> obj; 
}; 

#endif // H_CLASSHAVINGPROB 
+0

вы #include ? – billz

+0

yep, память включена в файл заголовка – Marl

+0

Представьте полный пример, демонстрирующий проблему. –

ответ

1

Ну, так как FireBreath должен работать на старых браузеров, которые не имеют стандарт на C++ 11, я не знаю, как решить эту проблему вы с описанием напрямую, но вы можете просто использовать тип boost scroll_ptr вместо unique_ptr.

+0

Спасибо за ответ. Попробуем позже. – Marl

0

Я был точно такой же проблемой в VS 2013 обновление 4, я просто записал

using namespace std; 

и компилируется!
Я включил <memory> и использовал std::unique_ptr<>, прежде чем пытаться использовать инструкцию (как и вы), и это порождало ошибки, подобные тем, которые вы там получили.
Однако, когда я попытался использовать using namespace std;, все было решено!
подумал, что это может помочь кому-то

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

  • Нет связанных вопросов^_^