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

时间:2014-05-14 16:21:11

标签: c++ boost vector static

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;  

变量。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您已声明变量,但未对其进行定义。您需要将定义添加到源文件中:

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

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