You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++静态成员函数调用类内static map报undefined symbol链接错误如何解决

问题原因

C++类内部的static成员仅属于声明,没有分配实际内存空间,必须在类外部完成定义,链接器才能找到对应的符号实体,否则就会抛出undefined symbol类型的链接错误。

解决方案

分两种兼容不同C++标准的实现方式:

  • 兼容C11/C14等旧标准:在类定义的外部、全局作用域下添加静态成员的定义代码即可,示例如下:
// 类定义外的全局位置添加此行
map<int, int> Solution::aaa;
  • C++17及更高版本:可以直接修改类内的静态成员声明,添加inline关键字,无需额外在类外定义:
// 将类内的原声明修改为如下格式
static inline map<int,int> aaa;

注意事项

静态成员的生命周期贯穿程序运行全程,多次调用frequencySort函数时,上次统计的数据会残留在aaa中,建议在函数开头添加aaa.clear();清空历史数据,避免逻辑错误。

内容的提问来源于stack exchange,提问作者Deng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:00:02