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
,我只是没有把它放在我发布的代码中。纠正