La clase QRCodeSignature no permite declaraciones de registro

Tengo una clase de firma QRCode que deseo poner declaraciones de registro y estoy comenzando con la parte del constructor como:

QRCodeSignature::QRCodeSignature(std::vector<WacomType::PEN>* theSigpoints, int theInterval, int theVersion) : sigpoints(theSigpoints), interval(theInterval), version(theVersion) {
Logging::log(QRCodeSignature::logger, Logging::Entry, QRCodeSignature::CLASSNAME, "QRCodeSignature");

Tengo en QRCodeSignature.cpp lo siguiente incluye

  #include "QRCodeSignature.h"
  #include <iostream>
  #include <cstdlib>
  #include <stdio.h>
  #include <stdlib.h>
  #include <math.h>

En QRCodeSignature.hi tengo la siguiente clase como QRCodeSignature

  a constructor
  a virtual destructor
  private:
  static const std::string CLASSNAME;
  static Logging::Logger* logger;

En QRCodeSignature.cpp tengo

 const std::string CLASSNAME = "QRCodeSignature";
 Logging::logger* QRCodeSignature::logger = NULL;

El error cuando construyo este proyecto[Versión]

 build/Release/MinGW_1-Windows/QRCodeSignature.o: In function `QRCodeSignature':
 C:\repos\impression\trunk\ProsenseSign/QRCodeSignature.cpp:13: undefined reference to `QRCodeSignature::CLASSNAME'
 collect2: ld returned 1 exit status
 make[2]: *** [dist/Release/MinGW_1-Windows/impression.api] Error 1
 make[1]: *** [.build-conf] Error 2
 make: *** [.build-impl] Error 2

preguntado el 24 de agosto de 12 a las 06:08

1 Respuestas

Deberías usar

const std::string QRCodeSignature::CLASSNAME = "QRCodeSignature";

en lugar de

const std::string CLASSNAME = "QRCodeSignature";

ya que el segundo no es la inicialización de static-member de clase.

Respondido 24 ago 12, 06:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.