Pergunta : “uns ou vários multiplicam” o erro encontrado símbolos definido dentro CONTRA C++ 2010

Este que eu tenho trabalhado sobre por horas e não posso figurar para fora. Eu criei um método dentro de um par de namespaces chamados data do formato: class= " lineNumbers " >
1 do >
#ifndef codeBody MXF_DATE_HPP do " prettyprint " " do class= do id= " codeSnippet788201 do >


When que de
"); dentro do cano principal eu mantenho-me começ este erro: class= >stdafx.obj " citado” do
uct STD:: char_traits, class STD:: mxf do allocator > do __cdecl:: data:: formatDate (classe 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) já definido nos originais de Sandbox.obj
C:\Documents and Settings\Owner\My \ estúdio visual 2010 \ projetos \ f \ Sandbox.exe: erro fatal LNK1169: uns ou vários multiplicam símbolos que definidos found


I verifyed repetidamente outra vez que o hpp está incluído somente uma vez e que não há nenhuma função similarmente nomeada. Está aqui meu cano principal (): class= " lineNumbers " >
1 do >
int do " prettyprint " " do class= do id= " codeSnippet788202 do >


I am de

Thanks para a ajuda!

Dan
class= do

Resposta : “uns ou vários multiplicam” o erro encontrado símbolos definido dentro CONTRA C++ 2010

Embora eu pudesse reproduzir o problema violando um de seus princípios básicos - “mim verifyed repetidamente outra vez que o hpp está incluído somente uma vez”. Eu sei o por experiência que os encabeçamentos têm uma maneira de entrar silenciosamente inesperada. Você não mencionou se você verific dependências do encabeçamento, de modo que pudesse ser uma edição. Por toda a possibilidade, é a lima que inclui seu encabeçamento igualmente uma lima de encabeçamento; e em caso afirmativo, essa lima de encabeçamento é chamada então em posições múltiplas?

A solução para mim era declarar a função do formatDate no encabeçamento e mover o corpo para sua própria lima de .cpp. (Você pode a adicionar a uma lima existente de .cpp se você deseja.) Eu penso que você deve fazer este para ver o que acontece.

O erro diz que o formatDate está definido na caixa de areia. Se Sandbox.cpp é a lima que tem o cano principal () esse você afixou, então nenhum problema. Se não, então você vê o formatDate lá?

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
lima de encabeçamento de // - revisada
mxf do namespace
{
	data do namespace
	{
		STD:: formatDate da corda (STD:: formatStr da corda);
	}
}

lima nova de // mxf_date.cpp - adicionada ao projeto
#include  
#include “mxf_date.h”
STD:: mxf da corda:: data:: formatDate (STD:: formatStr da corda)
{
	retornar o “ABC”;
}
Outras soluções  
 
programming4us programming4us