我有这堂课:
Logger.h
class Logger{
std::string filename;
std::ofstream fileStream;
/*Some methods ...*/
};
extern Logger* log;
在另一个头文件中,我已经包含了* log定义:
foo.h中
#include "Logger.h"
class Foo{
Logger* log;
/*Other code*/
};
但是如果在Foo.cpp文件中我尝试这样做:
log = new Logger();
编译器给我一个错误,任何想法?
答案 0 :(得分:2)
首先,必须定义变量声明为external
。所以你需要
Logger *log;
Logger.cpp
中的。你也可以像这样初始化它:
Logger *log = new Logger();
其次,您不再需要声明,只需要包含Logger.h
,无需在Logger
中声明另一个Foo.h
变量,只需使用{{1来自log
。