重复:
C++:对静态类成员的未定义引用
如果我有这样的类/结构
// header file
class Foo
{
public:
static int bar;
int baz;
int adder();
};
// implementation
int Foo::adder()
{
return baz + bar;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.我得到一个"未定义的引用`Foo :: bar'"错误.如何在C++中访问静态类变量?
我不确定我做错了什么,我认为所有内容都只定义了一次,所有内容都正确关联,但我想情况并非如此......
这是我的编译器给我的错误:
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static int Powerup_Health::g_refCount" (?g_refCount@Powerup_Health@@0HA)
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static class DBModel * Powerup_Health::g_pModel" (?g_pModel@Powerup_Health@@0PAVDBModel@@A)
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static int Powerup_QuadDamage::g_refCount" (?g_refCount@Powerup_QuadDamage@@0HA)
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static class DBModel * Powerup_QuadDamage::g_pModel" (?g_pModel@Powerup_QuadDamage@@0PAVDBModel@@A)
Run Code Online (Sandbox Code Playgroud)
码:
StaticElements.h
#pragma once
#include "D3DUtil.h"
class ContentManager;
class Level;
class GraphCamera;
class Powerup_Health;
class Powerup_QuadDamage;
class StaticElements
{
public:
StaticElements(){};
~StaticElements(){};
void PreLevelInitialisation(Level* pLevel);
void …Run Code Online (Sandbox Code Playgroud)