Visual Studio 2013 プレビューの以前のコードで std::unique_ptr を使用しましたが、問題はありません。私の最近のプロジェクトのケースでは、Visual Studio 2012 でのデバッグでコンパイラ エラーが少ないため、次のエラーのみが発生しました。
これは問題がある行です:
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