Questione : “uni o più moltiplicano„ l'errore trovato simboli definito dentro CONTRO C++ 2010

Questo che sto lavorando sopra per le ore e che non posso calcolare fuori. Ho generato un metodo all'interno di un accoppiamento dei namespaces denominati data di disposizione: class= " lineNumbers " >
1 del >
#ifndef codeBody MXF_DATE_HPP " del prettyprint " " del class= del id= " codeSnippet788201 del >


When che di
"); all'interno della conduttura continu aare ottenere questo errore: class= >stdafx.obj " citato„ del
uct std:: char_traits, class std:: mxf del __cdecl > del allocator:: data:: formatDate (codice categoria std:: basic_stringuct std:: char_traits, class std:: allocator >)„ (? formatDate@date@mxf@@YA? AV? $basic_string@DU? $char_traits@D@std@@V? $allocator@D@2@@std@@V34@@Z) già definito nei documenti di Sandbox.obj
C:\Documents and Settings\Owner\My \ studio visivo 2010 \ progetti \ f \ Sandbox.exe: errore mortale LNK1169: uni o più moltiplicano i simboli che definiti found


I verifyed continuamente che il hpp è incluso soltanto una volta e che non ci sono funzioni similmente chiamate. Qui è la mia conduttura (): class= " lineNumbers " >
1 del >
int " del prettyprint " " del class= del id= " codeSnippet788202 del >


I di

Thanks per l'aiuto!

Dan
class= del

Risposta : “uni o più moltiplicano„ l'errore trovato simboli definito dentro CONTRO C++ 2010

Anche se potevo riprodurre il problema violando uno dei vostri principi di base - “io verifyed continuamente che il hpp è incluso soltanto una volta„. So da esperienza che le intestazioni hanno un senso di insinuarsi inatteso. Non avete accennato se avete controllato le dipendenze dell'intestazione, di modo che ha potuto essere un'edizione. Da tutta la probabilità, è la lima che include la vostra intestazione inoltre una lima di intestazione; ed in caso affermativo, allora quella lima di intestazione è denominata nelle posizioni multiple?

La soluzione per me era di dichiarare la funzione del formatDate nell'intestazione e di spostare il corpo verso la relativa propria lima di .cpp. (Potete aggiungerli ad una lima attuale di .cpp se desiderate.) Penso che dovreste fare questo per vedere che cosa accade.

L'errore dice che il formatDate è definito in sabbiera. Se Sandbox.cpp è la lima che ha la conduttura () quella voi ha inviato, allora nessun problema. Se non, allora vedete il formatDate là?

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
lima di intestazione di // - modificata
mxf del namespace
{
	data del namespace
	{
		std:: formatDate della stringa (std:: formatStr della stringa);
	}
}

nuova lima di // mxf_date.cpp - aggiunta al progetto
#include  
#include “mxf_date.h„
std:: mxf della stringa:: data:: formatDate (std:: formatStr della stringa)
{
	restituire “il ABC„;
}
Altre soluzioni  
 
programming4us programming4us