boost::shared_ptr向量的c++静态初始化

c++ static initialization of vector of boost::shared_ptr

本文关键字:c++ 静态 初始化 ptr shared boost 向量      更新时间:2023-10-16
class IIntro
{
public:
  explicit IIntro(Sprite* _parent = null, IPrize* _prizeImpl = null);
  virtual ~IIntro() {}
  virtual void Play(bool _play = true) = 0;
  static void CreatStateAnims(Sprite* _parent);
protected:
  static typedef boost::shared_ptr<AnimSprite> SPAS;
  static std::vector<SPAS> introAnims;  
};

我得到了"对' IIntro::introAnims'的未定义引用"编译器错误。如何初始化

static typedef boost::shared_ptr<AnimSprite> SPAS;
static std::vector<SPAS> introAnims;  

变量。

您已经声明了变量,但还没有定义它。您需要将定义添加到源文件中:

std::vector<IIntro::SPAS> IIntro::introAnims;

注意SPAS是一个类型,而不是一个变量,因此不需要定义。但是,您确实需要从其声明中删除static;这只对变量和函数有意义,对类型没有意义