尝试创建一个共享指针并不断获得"预期的类型说明符"是什么原因造成的?
#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>();