gpt4 book ai didi

c++ - 由于使用静态变量导致的 undefined reference 错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:42 25 4
gpt4 key购买 nike

<分区>

我今天早些时候问了一个关于单例的问题,我在理解我遇到的一些错误时遇到了一些困难。我有以下代码:

时序.h

class Timing {

public:
static Timing *GetInstance();
private:
Timing();
static Timing *_singleInstance;
};

计时.cpp

 #include "Timing.h"

static Timing *Timing::GetInstance() { //the first error
if (!_singleInstance) {
_singleInstance = new Timing(); //the second error
}
return _singleInstance;
}

这段代码中有两个我无法弄清楚的错误。

  1. GetInstance() 方法在 header 中声明为静态方法。为什么在 cpp 文件中我必须省略单词 static?它给出错误:“无法声明成员函数‘static Timing* Timing::GetInstance()’具有静态链接”。正确的写法是:

    Timing *Timing::GetInstance() { ... }  
  2. 为什么我不能写_singleInstance = new Timing();?它给出错误:“未定义对 Timing::_singleInstance 的引用”。我通过在 cpp 文件中将 _singleInstance 定义为全局变量解决了这个错误。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com