新的智能指针语法

时间:2017-06-11 22:07:36

标签: c++ pointers

尝试创建共享指针并继续获得"期望的类型说明符"可能导致这种情况的原因是什么?

#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());

1 个答案:

答案 0 :(得分:0)

成员声明的语法不允许使用括号初始值设定项。相反,你可以使用花括号或等号:

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

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

您可能还需要考虑std::make_shared,这是使用默认删除器创建shared_ptr的首选方式:

shared_ptr<Pocket> p = std::make_shared<Pocket>();