静态结构链接器错误

bob*_*obo 3 c++ static struct

我正在尝试在C++中创建一个静态结构:

static struct Brushes
{
  static HBRUSH white ;
  static HBRUSH yellow ;
} ;

但它不起作用,我得到:

Error 4 error LNK2001: unresolved external symbol "public: static struct HBRUSH__ * Brushes::white"

为什么?

这样做是为了能够使用Brushes::white,Brushes::yellow在整个程序中,而无需创建的实例Brushes.

Ric*_*ton 6

您必须在某处定义静态成员,通常在.cxx文件中,例如:

HBRUSH Brushes::white;
Run Code Online (Sandbox Code Playgroud)

原因是头文件没有定义,它只声明它.


epa*_*tel 6

您应该删除第一个staticstruct Brushes线.然后,您需要在.cpp文件中定义初始值(并声明其内存),如下所示:

HBRUSH Brushes::white(some_init_value);
HBRUSH Brushes::yellow(some_init_value);
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用VC++,那么如果包含__declspec(selectany),则可以将这些声明放在头文件(而不是.cpp)中.非常酷的技巧. (2认同)