Статическая ошибка компоновщика структуры - PullRequest
3 голосов
/ 05 декабря 2009

Я пытаюсь создать статическую структуру в 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.

Ответы [ 3 ]

6 голосов
/ 05 декабря 2009

Вы должны удалить первый static из строки struct Brushes. Затем вам нужно будет определить начальные значения (и объявить их память) в файле .cpp следующим образом:

HBRUSH Brushes::white(some_init_value);
HBRUSH Brushes::yellow(some_init_value);
6 голосов
/ 05 декабря 2009

Вы должны определить статические элементы где-нибудь, обычно в файле .cxx, например ::100100

HBRUSH Brushes::white;

Причина в том, что заголовочный файл не дает определения, он только объявляет его.

2 голосов
/ 05 декабря 2009

Так что вам нужно:

HBRUSH Brushes::white = xxxx;

где-то в одном из ваших исходных файлов. И избавиться от этой первоначальной статики.

вы знаете про стоковые объекты в Win32 GDI, верно?

...