C++ C+中静态变量的重新定义错误+;

C++ C+中静态变量的重新定义错误+;,c++,linker,header-files,ld,C++,Linker,Header Files,Ld,在编译这些文件时,我一直遇到重新定义错误。我已经仔细阅读了关于同样的问题,但找不到我错在哪里。 以下是档案:- #ifndef UTILITY_H #define UTILITY_H //------------// //HEADER FILES// //------------// #include <string> #include <map> #include <fstream> //-------

在编译这些文件时,我一直遇到重新定义错误。我已经仔细阅读了关于同样的问题,但找不到我错在哪里。
以下是档案:-

     #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 
我得到的错误是:-

utility.cpp:18:19:错误:重新定义'std::ofstream utility::c' utility.h:72:10:错误:“std::ofstream utility::c”之前在此处声明

对于实用程序类中的每个静态变量,依此类推


谁能告诉我我做错了什么

上面发布的标题缺少endif。这肯定会导致你的错误。
这是一个转录错误吗?

上面发布的标题缺少endif。这肯定会导致你的错误。
这是一个转录错误吗?

上面发布的标题缺少endif。这肯定会导致你的错误。
这是一个转录错误吗?

上面发布的标题缺少endif。这肯定会导致你的错误。
这是转录错误吗?

在源文件中定义所有变量时使用显式命名空间:

std::ofstream Utility::out;

在源文件中定义所有变量时使用显式命名空间:

std::ofstream Utility::out;

在源文件中定义所有变量时使用显式命名空间:

std::ofstream Utility::out;

在源文件中定义所有变量时使用显式命名空间:

std::ofstream Utility::out;


std
名称空间是。。。在.cpp文件中的确切位置?你决定不粘贴的错误消息的第二行非常有说服力,顺便说一句,即“这里”在哪里?我不明白你的意思是什么?@WhozCraig用准确的错误消息更新了问题谢谢。现在,
utility.cpp
如何知道
ostream
位于
std
命名空间中?您没有像在头文件中那样在.cpp文件中完全指定名称空间,这有什么原因吗?在定义类变量之前,从
utility.cpp
顶部剪下了10行代码。有机会看到这些吗?@WhozCraig谢谢你的回复。定义变量之前的那些行只是注释,而且,我在
utility.cpp
中提到了
std
。我只是忘了在我发布的代码中提到它。更新了
std
命名空间为。。。在.cpp文件中的确切位置?你决定不粘贴的错误消息的第二行非常有说服力,顺便说一句,即“这里”在哪里?我不明白你的意思是什么?@WhozCraig用准确的错误消息更新了问题谢谢。现在,
utility.cpp
如何知道
ostream
位于
std
命名空间中?您没有像在头文件中那样在.cpp文件中完全指定名称空间,这有什么原因吗?在定义类变量之前,从
utility.cpp
顶部剪下了10行代码。有机会看到这些吗?@WhozCraig谢谢你的回复。定义变量之前的那些行只是注释,而且,我在
utility.cpp
中提到了
std
。我只是忘了在我发布的代码中提到它。更新了
std
命名空间为。。。在.cpp文件中的确切位置?你决定不粘贴的错误消息的第二行非常有说服力,顺便说一句,即“这里”在哪里?我不明白你的意思是什么?@WhozCraig用准确的错误消息更新了问题谢谢。现在,
utility.cpp
如何知道
ostream
位于
std
命名空间中?您没有像在头文件中那样在.cpp文件中完全指定名称空间,这有什么原因吗?在定义类变量之前,从
utility.cpp
顶部剪下了10行代码。有机会看到这些吗?@WhozCraig谢谢你的回复。定义变量之前的那些行只是注释,而且,我在
utility.cpp
中提到了
std
。我只是忘了在我发布的代码中提到它。更新了
std
命名空间为。。。在.cpp文件中的确切位置?你决定不粘贴的错误消息的第二行非常有说服力,顺便说一句,即“这里”在哪里?我不明白你的意思是什么?@WhozCraig用准确的错误消息更新了问题谢谢。现在,
utility.cpp
如何知道
ostream
位于
std
命名空间中?您没有像在头文件中那样在.cpp文件中完全指定名称空间,这有什么原因吗?在定义类变量之前,从
utility.cpp
顶部剪下了10行代码。有机会看到这些吗?@WhozCraig谢谢你的回复。定义变量之前的那些行只是注释,而且,我在
utility.cpp
中提到了
std
。我只是忘了在我发布的代码中提到它。更新的是,实际上在实际的代码文件中有一个#endif以及
使用namespace std
,我只是没有把它放在我发布的代码中。更正同样的问题。你能告诉我们编译器吗。因为在Linux上使用GCC4.9,只要我链接stdc++(-lstd++),并编写它编译的空main,然后为我链接。有关stdc++的更多信息,请参见()我在ubuntu 12.04 64位上使用g++4.6.3。实际上,在实际的代码文件中有一个#endif以及
使用namespace std
,我只是没有把它放在我发布的代码中。更正同样的问题。你能告诉我们编译器吗。因为在Linux上使用GCC4.9,只要我链接stdc++(-lstd++),并编写它编译的空main,然后为我链接。有关stdc++的更多信息,请参见()我在ubuntu 12.04 64位上使用g++4.6.3。实际上,在实际的代码文件中有一个#endif以及
使用namespace std
,我只是没有把它放在我发布的代码中。纠正