私は、ロギングプログラムをコンパイルしていますが、私はこのエラーを受けていますし、私の人生のためにそれを把握するカント...私はC++クラス再定義エラー
g++ -Wall logger.cpp -o log
でコンパイルはgccと
logger.cpp:15: error: redefinition of ‘class Logger’
logger.h:20: error: previous definition of ‘class Logger’
logger.h:
#ifndef LOGGER_H
#define LOGGER_H
#include <fstream>
#include <iostream>
#include <string>
using std::string;
class Logger
{
static Logger* m_pInstance;
public:
static Logger* Instance() { return m_pInstance; }
void writeLog(string message);
void openLogFile(string fileName);
void closeLogFile();
void deleteLogger();
};
#endif
logger.cpp
#include "logger.h"
#include <fstream>
#include <iostream>
class Logger
{
static Logger* m_pInstance;
std::ofstream m_pOutputFile;
Logger()
{
}
~Logger()
{
}
public:
static Logger* Instance()
{
if(!m_pInstance)
{
m_pInstance = new Logger;
}
return m_pInstance;
}
void writeLog(std::string message)
{
m_pOutputFile << message << "\n";
std::cout << "you just wrote " << message << " to the log file!\n" << std::endl;
}
void openLogFile(std::string fileName)
{
m_pOutputFile.open(fileName.c_str(),std::ios::out);
}
void closeLogFile()
{
m_pOutputFile.close();
}
void deleteLogger()
{
delete m_pInstance;
}
};
Logger* Logger::m_pInstance = NULL;
私は変更を加えましたが、今はLogger()と〜Logger().............. logger.cpp:17:error:暗黙に宣言された定義'ロガー::ロガー()' logger.cpp:17:エラー:の宣言 'ロガー:: Loggerは()' は異なる例外をスロー logger.h:18:エラー:前の宣言「ロガーから::ロガー()スロー() ' – user603756
もちろん、logger.cppの実装ではヘッダーと同じ署名が必要ですが、そこには 'throw()'も必要です。また、すでにlogger.hファイルに実装されている関数やctor本体を複製しないでください。 – Xeo