这是
main.cpp
有很多
Log
起皱的地方:
#include "utils.hpp"
...//some code
int main(){
int a = 0;
int b = 0;
util::LogClass::Log("Initial","something);
//some more code
util::LogClass::Log("Mid","something");
//some more code
util::LogClass::Log("Middle","something");
}
LogClass的定义如下
utils.hpp
:
namespace util{
class LogClass{
public:static bool LOG_ENABLED;
public: static void Log(std::string tag, std::string message){
if(LOG_ENABLED){
std::cerr << tag+": "+message <<std::endl;}
}
}
bool LogClass::LOG_ENABLED=true;
}
主.cpp
:
#include "utils.cpp"
util::LogClass::LOG_ENABLE=false;
int main(){ //the previous main function}
*上面的代码实际上给出了一个错误说明:
重新定义bool util::LogClass::logu ENABLED
bool util::LogClass::LOG_ENABLE=false
*
#include "utils.cpp"
int main(){ util::LogClass::LOG_ENABLED=false; //the previous main function}
然后代码编译得很好。所以我的问题是为什么我不能在
main()
函数,即使它是静态成员,为什么(
g++
)编译器把它当作一个重新定义?