静态结构成员获取"未定义的引用"。不知道为什么

static struct member gets “undefined reference”. Don't know why

本文关键字:引用 不知道 为什么 未定义 结构 成员 获取 静态      更新时间:2023-10-16

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

这是我的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::applier_metric'的未定义引用

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

std::cout<lt;Foo::applier_metric.bits<lt;std::endl;

我也犯了同样的错误。

我的问题是:

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

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

我做错了什么?

提前谢谢。

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

Foo::APPLayer Foo::applayer_metric;