2017-06-11 14 views
-3

共有ポインタを作成しようとしていて、これを引き起こしている可能性のある「型指定子が期待されていますか?スマートポインタの構文新規作成

#ifndef ROOM_HPP 
#define ROOM_HPP 
#include <iostream> 
#include <string> 
#include <memory> 

#include "Pocket.hpp" 


using namespace std; 

class Room 
{ 
protected: 
    Room *up; 
    Room *down; 
    Room *left; 
    Room *right; 
    string name; 

    shared_ptr<Pocket> p(new Pocket()); 
+0

このコンテキストでイニシャライザに '()'を使用することはできません。代わりに '{}'を使う –

答えて

0

括弧の初期化子は、メンバー宣言の構文では許可されていません。

:あなたはまた、デフォルト削除手段と shared_ptrを作成するための好ましい方法である std::make_sharedを、検討する必要があります

shared_ptr<Pocket> p{new Pocket()}; 

または

shared_ptr<Pocket> p = shared_ptr<Pocket>(new Pocket()); 

:代わりに、中括弧や等号を使用することができます

shared_ptr<Pocket> p = std::make_shared<Pocket>(); 
関連する問題