我在 Visual Studio 2013 预览版中之前的代码中使用了 std::unique_ptr,但我没有遇到问题。对于我最近的项目案例,在 Visual Studio 2012 中调试时编译器错误较少。所以现在我只收到以下错误
这是有问题的行:
std::unique_ptr<MyClass> classHolder;
以下是编译器所说的
“unique_ptr”:不是“std”的成员
语法错误:缺少 ';' 在'<'之前
缺少类型说明符 - 假定为 int。注意:C++ 不支持
默认整数';' 之前的意外标记
关于如何解决此问题的任何想法?
样本:
#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