Estoy usando un compilador cruzado. Mi codigo es:
class WindowsTimer{
public:
WindowsTimer(){
_frequency.QuadPart = 0ull;
}
private:
static LARGE_INTEGER _frequency;
};
Obtuve el siguiente error:
referencia indefinida a `WindowsTimer :: _ frecuencia '
También intenté cambiarlo a
LARGE_INTEGER _frequency.QuadPart = 0ull;
o
static LARGE_INTEGER _frequency.QuadPart = 0ull;
pero sigo recibiendo errores.
alguien sabe por qué?
WindowsTimer::_frequency
?Respuestas:
Necesita definir
_frequency
en el archivo .cpp.es decir
fuente
El vinculador no sabe dónde asignar los datos
_frequency
y debe indicarlo manualmente. Puede lograr esto simplemente agregando esta línea:LARGE_INTEGER WindowsTimer::_frequency = 0;
en una de sus fuentes de C ++.Explicación más detallada aquí
fuente
Con C ++ 17, puede declarar su variable en línea , ya no es necesario definirla en un archivo cpp.
inline static LARGE_INTEGER _frequency;
fuente
error: 'foobar' declared as an 'inline' field
Si hay una variable estática declarada dentro de la clase, debe definirla en el archivo cpp como este
LARGE_INTEGER WindowsTimer::_frequency = 0;
fuente