I have been getting redefinition errors when I compile these files. I have looked through questions on SO regarding the same, but am unable to find where I am wrong.
Here are the files :-
#ifndef UTILITY_H
#define UTILITY_H
//------------//
//HEADER FILES//
//------------//
#include <string>
#include <map>
#include <fstream>
//----------------------------//
/* Declaration of the class. */
// ---------------------------//
class Utility
{
public:
static std::ofstream out ;
static std::ofstream music ;
static std::ofstream video ;
static std::ofstream document ;
static std::ofstream mp3 ;
static std::ofstream mp4 ;
static std::ofstream html ;
static std::ofstream deb ;
static std::ofstream cpp ;
static std::ofstream c ;
static std::ofstream py ;
static std::ofstream php ;
static std::ofstream java ;
static std::ofstream _class ;
static std::ofstream so ;
static std::ofstream master ;
static std::string lastPath ;
static std::map<std::string, std::string> records ;
static bool openStream() ; // to open the stream for indexing.
static void index(std::string) ; // to index.
static bool closeStream() ; // to close the streams after indexing.
static void loadTree() ; // to load the Tree at the start of the application.
static void search(std::string, int) ; // to search for the required keyword.
} ;
#endif
Here is the utility.cpp file in which I have my implementation :-
#include "utility.h"
using namespace std ;
/* The functions are in the temp.cpp file fo testing purposes. */
// -------------------------------------------------------//
/* Definition of the static variables outside the class. */
// ------------------------------------------------------//
ofstream Utility::out ;
ofstream Utility::music ;
ofstream Utility::video ;
ofstream Utility::document ;
string Utility::lastPath ;
ofstream Utility::mp3 ;
ofstream Utility::mp4 ;
ofstream Utility::html ;
ofstream Utility::deb ;
ofstream Utility::cpp ;
ofstream Utility::c ;
ofstream Utility::py ;
ofstream Utility::php ;
ofstream Utility::java ;
ofstream Utility::_class ; // because class is a keyword in c++.
ofstream Utility::so ;
ofstream Utility::master ;
The errors I am getting is :-
utility.cpp:18:19: error: redefinition of ‘std::ofstream Utility::c’ utility.h:72:10: error: ‘std::ofstream Utility::c’ previously declared here
and so on for every static variable in Utility class.
Can anybody please tell me what I am doing wrong here ?
stdnamespace is... where exactly in your .cpp file? The second line of that error message that you decided not to paste would be extremely telling, btw. I.e. where is "here" ?utility.cppknow thatostreamis in thestdnamespace ? Is there a reason you didn't fully specify the namespace in your .cpp file as you did in your header? There are 10 lines of code you clipped out of the top ofutility.cppbefore your class vars are defined. Any chance of seeing those?stdinutility.cpp. I just forgot to mention it in the code I posted here. Updated that