新的智能指针语法



尝试创建一个共享指针并不断获得"预期的类型说明符"是什么原因造成的?

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

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

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

最新更新