1

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

这是我的 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 << Foo::applayer_metric.bits << std::endl;

我得到完全相同的错误。

我的问题是:

  1. 如何将静态结构变量的所有成员初始化为零?
  2. 如何在 Foo.cpp 的其他函数中访问这些成员?

仅供参考,如果我初始化并访问变量“app_counter”,没有任何抱怨

我究竟做错了什么?

提前致谢。

4

1 回答 1

4

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

Foo::APPLayer Foo::applayer_metric;
于 2013-02-22T10:26:32.850 回答