error LNK2005 (sobre enlazado)

Dudas y comentarios sobre otros lenguajes de programación. Si algún lenguaje recibe suficientes preguntas le añadimos nueva categoría.
Responder
Mensaje
Autor
Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

error LNK2005 (sobre enlazado)

#1 Mensaje por Masakre » 29/03/2013 8:05 am

Hasta antes el programa funcionaba correctamente.

En realidad son muchos ficheros .h bajo un mismo proyecto de Windows Forms. Pero el problema reside en dos: Preguntas.h y CPanel.h

Cuando estaba bien:
En Preguntas.h estaba la clase AdmPreg con su respectivo constructor. Recibía dos parámetros que servían para inicializar a variables públicas de la misma clase (las hice públicas para no escribir 2 métodos get que sirvan para obtener esas variables, creo que es una mala práctica y ya no lo volveré a hacer, pero funcionaba bien).
Es decir, en public había algo como lo siguiente:

Código: Seleccionar todo

        size_t CantEnun, PPP;
	AdmPreg(size_t _NroPreg, size_t _Ptos)
	{
		CantEnun = _NroPreg;
		PPP = _Ptos;
	}
En CPanel yo creaba una instancia de la clase llamada Examen, dentro de una función.
Pero luego quise volver a acceder a esa instancia desde otra función y no era posible. Entonces se me ocurrió querer definir Examen fuera de todas las funciones, de modo que sea global.

Pero al declararla como global, me decía que no hacía uso del constructor.
Y yo no podía hacer uso del constructor porque los argumentos que debía pasarle debían ser antes leídos (y eso estaba en otra función).

Entonces quité el constructor e hice que esa asignación lo realice otro método.
Es decir, quedó así:

Código: Seleccionar todo

	void DefinirDim(size_t _NroPreg, size_t _Ptos)
	{
		CantEnun = _NroPreg;
		PPP = _Ptos;
	}
Y las variables CantEnun y PPP las puse como privadas.

Dije, así podré declarar Examen como una instancia global de la clase AdmPreg porque ya no tiene constructor.
Pero, en cuanto hice esto, saltaron 2 errores totalmente desconocidos para mí:

Código: Seleccionar todo

Error	2	error LNK1169: se encontraron uno o más símbolos definidos simultáneamente	E:\Developer Zone\Aplicaciones de escritorio\Proyectos C++\C++ con Visual Studio\WindowsForms\MyIdeas\VirtualExam\Debug\VirtualExam.exe	1

Código: Seleccionar todo

Error	1	error LNK2005: ya se definió "class AdmPreg Examen" (?Examen@@$$Q3VAdmPreg@@A) en CPanel.obj	E:\Developer Zone\Aplicaciones de escritorio\Proyectos C++\C++ con Visual Studio\WindowsForms\MyIdeas\VirtualExam\VirtualExam\VirtualExam.obj
He buscado por internet sobre dicho error y dice que son errores de enlazado... pero la verdad yo no he alterado para nada el orden de enlazado o cosas así.
También borré VirtualExam.obj para que vuelva a generarse, pensando que eso sería una solución jeje, pero nada.

(Incluso en Preguntas.h he intentado declarar AdmPreg Examen y luego en CPanel.h ponerlo junto a extern, para que lo enlace con la definición que ya se hizo en Preguntas.h)

Gracias de antemano.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado