尝试创建共享指针并继续获得"期望的类型说明符"可能导致这种情况的原因是什么?
#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<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>();