Reto:
Tengo este código que no comstack. ¿Puedes averiguar lo que está mal? Me causó dolor de cabeza una vez.
// header namespace values { extern std::string address; extern int port; } // .cpp file std::string ::values::address = "192.0.0.1"; int ::values::port = 12;
Se ve bien a primera vista. ¿Cuántos y cuáles son los errores?
Un error:
std::string values::address = "192.0.0.1";
es la forma correcta, de lo contrario el parse es
std::string::values::address = "192.0.0.1";
y no hay “valores” de miembro con una “dirección” de miembro dentro de “cadena” …
funcionará para los tipos incorporados, ya que nunca pueden contener miembros … así que int :: values es un análisis no ambiguo, int :: values, porque el anterior no tiene sentido.
std::string (::values::address) = "192.0.0.1";
trabaja tambien Tenga en cuenta que si tipeaf intintype; que tendrías el mismo problema usando algún tipo que con la cadena anterior, pero no con “int”.
Llego tarde al juego, pero hubiera preferido escribir el archivo .cpp como:
// .cpp file namespace values { std::string address = "192.0.0.1"; int port = 12; }
Por supuesto, eso no resuelve el problema que tenía con la statement de friend
.