static struct member获取“未定义的引用”。不知道为什么

时间:2013-02-22 10:23:24

标签: c++ static struct undefined-reference

我想创建一个类,从许多其他类和模拟结束收集信息。为此,它必须独立于所有其他类并且完全可访问。为此,我选择了一种静态方法,一种静态结构。

这是我的Foo.h

class Foo
{
 public:
   static int app_counter;

   typedef struct
   {
       double eed;
       int bits;  
   }APPLayer;

   static APPLayer applayer_metric;
public:
   Foo(){};
   ~Foo();
};

这是Foo.cpp

#include "Foo.h"
int Foo::app_counter=0;
//How do I set all internal members to zero?
Foo::APPLayer applayer_metric;
Foo::~Foo()
{
  std::cout << app_counter << std::endl; 
  //Which is the way to access to the values of my members?
  std::cout << applayer_metric.bits << std::endl;
}

这是我在Foo.CPP中遇到的错误

  

Foo.cc:38:对'Foo :: applayer_metric'的未定义引用

例如,如果我将Foo.cpp中的行更改为此

  

std :: cout&lt;&lt; Foo :: applayer_metric.bits&lt;&lt;的std :: ENDL;

我得到完全相同的错误。

我的问题是:

  1. 如何将静态struct变量的所有成员初始化为零?
  2. 如何在Foo.cpp中的其他功能中访问这些成员?
  3. 仅供参考,如果我初始化并访问变量“app_counter”,则没有抱怨

    我做错了什么?

    提前致谢。

1 个答案:

答案 0 :(得分:3)

您对Foo::applayer_metric的定义缺少范围解析运算符。将其更改为:

Foo::APPLayer Foo::applayer_metric;