外部指针初始化

Extern pointer initialization

本文关键字:初始化 指针 外部      更新时间:2023-10-16

我有这样一个类:

Logger.h

class Logger{
    std::string filename;
    std::ofstream fileStream;
    /*Some methods ...*/
};
extern Logger* log;

在另一个头文件中,我包含了*log定义:

foo。

#include "Logger.h"
class Foo{
    Logger* log;
    /*Other code*/
};

但是如果在Foo.cpp文件中,我尝试这样做:

log = new Logger();

编译器给我一个错误,你知道吗?

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

Logger *log;

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

Logger *log = new Logger();

第二,你不需要更多的声明,那就是你只需要包括Logger.h,不需要在Foo.h中声明另一个Logger变量,只需要从Logger.h中使用log