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 に答える