加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将类静态成员定义放入cpp文件 – 技术限制?

发布时间:2020-12-16 09:29:05 所属栏目:百科 来源:网络整理
导读:我在C语言编码中声明一些静态变量,然后查看关于未解析的静态变量的编译错误(在早期,我总是被吓到了,这是什么意思),这是我最喜欢的烦恼之一. 我的意思是经典的例子: Test.h class Test{private: static int m_staticVar; int m_var;} TEST.CPP int Test::m_s
我在C语言编码中声明一些静态变量,然后查看关于未解析的静态变量的编译错误(在早期,我总是被吓到了,这是什么意思),这是我最喜欢的烦恼之一.

我的意思是经典的例子:

Test.h

class Test
{
private:
  static int m_staticVar;
  int m_var;
}

TEST.CPP

int Test::m_staticVar;

这个定义的语法让我觉得更令人困惑的是,你不能在这里使用’static’这个词(因为静态在cpp中使用时有不同的含义,叹息)所以你不知道(除了知识静态成员) vars就是这样工作)为什么在地球上有一些来自Test类的int以这种方式定义,为什么m_var不是.

根据您的知识/意见,为什么?我只能想到一个原因,那就是让连接器生活更轻松 – 也就是说你为什么不能使用非整数常量(SomeClass m_var = something).但是我不喜欢弯曲语言功能的想法只是因为编译链的某些部分会很难吃它…

解决方法

嗯,这就是它的工作方式.您只在.h文件中声明了静态成员.链接器需要能够在它链接在一起的目标文件中找到该静态成员的一个定义.您不能将定义放在.h文件中,这将生成多个定义.

更新:C 17可以用inline variable来解决这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读