Usuário com melhor resposta
[C++] - C2011'class' type redefinition

Pergunta
-
Bom dia, tudo bem?
Está dando o seguinte erro na hora de compilar meu arquivo header.
A mensagen é: Error2 - error C2011: 'MyEventLog' : 'class' type redefinitionE o código do meu arquivo header (MyEventLog.h) é:
using namespace System; using namespace System::Collections; using namespace System::Collections::Generic; using namespace System::Diagnostics; using namespace System::IO; public ref class MyEventLog{ private: String ^pvtSource; String ^pvtFileName; String ^pvtLogDir; StreamWriter ^pvtFile; public: MyEventLog(String ^Source); void WriteEntry(String ^info, EventLogEntryType EvtType); void Close(); };
Se alguém puder me ajudar...
Abraços.
Alan Machado _ If mySocialFile.IsNull Then Return True
Respostas
-
Alan, parece que vc está incluindo o MyEventLog.h em mais de um lugar no seu código. Verifique nas suas outras classes se isso acontece. Aí, na hora de compilar, o compilador entende que a classe MyEventLog está sendo definida mais uma vez, porque ele troca o #include "MyEventLog.h" pelo código que está nesse arquivo. Para adiantar, verifique se vc está fazendo o include no header (.h) e na implementação (.cpp) da mesma classe. Isso causa o erro que vc está tendo.
- Marcado como Resposta Alan Machado da Silva segunda-feira, 26 de dezembro de 2011 17:36
Todas as Respostas
-
-
#include "MyEventLog.h" #include "stdafx.h" using namespace System; using namespace System::Collections; using namespace System::Collections::Generic; using namespace System::Xml; using namespace System::Diagnostics; using namespace System::IO; MyEventLog::MyEventLog(String ^Source){ try{ pvtSource = Source; pvtLogDir = Path::Combine(Path::GetDirectoryName(Process::GetCurrentProcess()->MainModule->FileName), "LOG"); Directory::CreateDirectory(pvtLogDir); pvtLogDir = Path::Combine(pvtLogDir, Path::GetFileNameWithoutExtension(Process::GetCurrentProcess()->MainModule->FileName)->ToUpper()); Directory::CreateDirectory(pvtLogDir); }catch (Exception ^ex){ pvtSource = "MyEventLog"; this->WriteEntry(String::Concat("Error on MyEventLog.New: ", ex->Message), EventLogEntryType::Error); } } void MyEventLog::WriteEntry(String ^info, EventLogEntryType EvtType){ FileInfo ^FileInfo = nullptr; String ^NewFileName = nullptr; int iCnt = 0; try{ pvtFileName = Path::Combine(pvtLogDir, String::Concat(DateTime::Now.ToString("yyyyMMdd"), " [", pvtSource, "].LOG")); if (File::Exists(pvtFileName)){ FileInfo = gcnew System::IO::FileInfo(pvtFileName); if (FileInfo->Length > 102400){ iCnt = 1; do{ NewFileName = Path::Combine(Path::GetDirectoryName(pvtFileName), String::Concat(Path::GetFileNameWithoutExtension(pvtFileName), "(", iCnt, ")", Path::GetExtension(pvtFileName))); iCnt += 1; } while (File::Exists(NewFileName)); File::Move(pvtFileName, Path::GetFileName(NewFileName)); } } //pvtFile = Microsoft::VisualBasic::FileIO::FileSystem::OpenTextFileWriter(pvtFileName, true); //Ajustar... if (pvtFile != nullptr){ pvtFile->WriteLine(String::Concat(DateTime::Now.ToString("[HH:mm:ss.fffffff]"), " ", info, " - ", EvtType.ToString())); pvtFile->Close(); pvtFile = nullptr; } }catch (Exception ^ex){ Debug::Write(String::Concat("MyEventLog.WriteEntry error:", ex->Message)); }finally{ if (pvtFile != nullptr){ pvtFile->Close(); } pvtFile = nullptr; FileInfo = nullptr; } } void MyEventLog::Close(){ try{ if (pvtFile != nullptr){ pvtFile->Close(); } }catch (Exception ^ex){ Debug::Write(String::Concat("MyEventLog.WriteEntry error:", ex->Message)); } }
Alan Machado _ If mySocialFile.IsNull Then Return True -
Alan, parece que vc está incluindo o MyEventLog.h em mais de um lugar no seu código. Verifique nas suas outras classes se isso acontece. Aí, na hora de compilar, o compilador entende que a classe MyEventLog está sendo definida mais uma vez, porque ele troca o #include "MyEventLog.h" pelo código que está nesse arquivo. Para adiantar, verifique se vc está fazendo o include no header (.h) e na implementação (.cpp) da mesma classe. Isso causa o erro que vc está tendo.
- Marcado como Resposta Alan Machado da Silva segunda-feira, 26 de dezembro de 2011 17:36
-