Одна из причин, по которой вам нужно реализовать интерфейс, а не расширять базовый класс, заключается в том, что вы уже расширяете какой-либо другой класс. Вы можете расширить только один класс, но вы можете реализовать любое количество интерфейсов.
Если вы расширяете Thread, вы в основном предотвращаете выполнение вашей логики любым другим потоком, чем «это». Если вы хотите, чтобы поток выполнял вашу логику, лучше всего реализовать Runnable.
Линкер не знает, куда выделить данные для _frequency
, и вы должны указать его вручную. Вы можете достичь этого, просто добавив эту строку: LARGE_INTEGER WindowsTimer::_frequency = 0;
в один из ваших источников на C ++.
Более подробное объяснение здесь
Вам нужно определить _frequency
в файле .cpp.
i.e.
LARGE_INTEGER WindowsTimer::_frequency;
Если в классе есть статическая переменная, то вы должны определить ее в файле cpp, например
LARGE_INTEGER WindowsTimer::_frequency = 0;