开发者

Why is my constructor being called over and over?

I've got the following h file:

#ifndef GLOBAL_DATA_H_
#define GLOBAL_DATA_H_

class GlobalData
{
  public:
    GlobalData();
    ...
  private:
    ...
};

namespace global_data
{
  static GlobalData globalDataInstance;
}

#endif

Countless files include the header file above, and access global_data:开发者_如何学C:globalDataInstance. If I put a breakpoint in GlobalData's constructor body, I see that, when I run the application, the constructor gets called countless times. Why is this?


It appears that declaring static variables within a namespace does not do what I thought, according to this post:

http://bytes.com/topic/c/answers/134682-initializing-static-variable-inside-namespace

If you include this header in more than one source file you will get multiple variables. If you change the value of the variable in one file you will not see the change in another file.

It appears the property thing to do would be to declare the namespace variable using extern instead of static.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜