Definición de Clase anidada en el archivo fuente
Si tengo una clase anidada así:
class MyClass
{
class NestedClass
{
public:
// nested class members AND definitions here
};
// main class members here
};
Actualmente, las definiciones de MyClass
están en el archivo CPP
pero las definiciones de NestedClass
están en el archivo de encabezado, es decir, no puedo declarar las funciones/constructores en el archivo CPP
.
Así que mi pregunta es, ¿cómo defino las funciones de NestedClass
en el archivo cpp? Si no puedo, ¿cuál es la razón (y si este es el caso, tengo una vaga idea de por qué sucede esto, pero me gustaría una buena explicación)? ¿Qué hay de las estructuras?
1 answers
Puedes. Si su clase interna tiene un método como:
class MyClass {
class NestedClass
{
public:
void someMethod();
};
// main class members here
};
...a continuación, se puede definir en el .archivo cpp así:
void MyClass::NestedClass::someMethod() {
// blah
}
Las estructuras son casi lo mismo que las clases en C++ - solo que por defecto son 'públicas' para su acceso. Son tratados en todos los demás aspectos como las clases.
Usted puede (como se indica en los comentarios) simplemente declarar una clase interna, por ejemplo:
class MyClass {
class NestedClass;
// blah
};
..y luego definirlo en el archivo de implementación:
class MyClass::NestedClass {
// etc.
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-11 18:19:46