外部指针初始化

时间:2011-12-02 21:07:44

标签: c++

我有这堂课:

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();

编译器给我一个错误,任何想法?

1 个答案:

答案 0 :(得分:2)

首先,必须定义变量声明external。所以你需要

Logger *log;
Logger.cpp中的

。你也可以像这样初始化它:

Logger *log = new Logger();

其次,您不再需要声明,只需要包含Logger.h,无需在Logger中声明另一个Foo.h变量,只需使用{{1来自log