目录

一、产生原因

二、解决方案

方案1:静态函数访问静态变量

方案2:静态函数内定义对象,再访问变量


一、产生原因

原因:静态函数访问了非静态变量, static函数与非static变量混用,示例代码如下

class FLOWEDITORSHARED_EXPORT NETranslator
{
public:NETranslator();static QString ch2En(const QString &ch);static QString en2Ch(const QString &en);private:QHash<QString, QString> m_hash;
};
//
NETranslator::NETranslator()
{m_hash.insert("image", QStringLiteral("图像数据"));m_hash.insert("region", QStringLiteral("区域数据"));m_hash.insert("contours", QStringLiteral("轮廓数据"));
}QString NETranslator::ch2En(const QString &ch)
{QString en =  m_hash.key(ch, ch);return en;
}QString NETranslator::en2Ch(const QString &en)
{QString ch = m_hash.value(en, en);return ch;
}

上述代码编译将会出现以下错误:

NETranslator.cpp:12: error: C2228: “.key”的左边必须有类/结构/联合

NETranslator.cpp:18: error: C2228: “.value”的左边必须有类/结构/联合

二、解决方案

方案1:静态函数访问静态变量

那么把类变量也声明为static是否有用了,修改代码如下:

class FLOWEDITORSHARED_EXPORT NETranslator
{
public:NETranslator();static QString ch2En(const QString &ch);static QString en2Ch(const QString &en);private:static  QHash<QString, QString> m_hash;    //修改了此处,静态声明
};

再次编译出现了以下错误

NETranslator.obj

Qt 编译错误:C2228: “.key”的左边必须有类/结构/联合相关推荐

  1. Qt错误 error: C2228: “.exec”的左边必须有类/结构/联合 的解决方法

    开发环境:Qt 5.6.1 (MSVC 2013, 32 bit) 我写了如下代码: GetUserFaceDialog dialog(); dialog.exec(); GetUserFaceDia ...

  2. C2228 “.xxx”的左边必须有类/结构/联合 c++

    c++编译报错: C2228    "aaa.xxx"的左边必须有类/结构/联合 我发现的原因:指针函数用错 aaa是个指针,正确的用法: aaa->xxx 网友1的原因:初 ...

  3. 安装qtceator后无法启动help插件 Qt编译错误:cannot find -lGL 解决办法

    1. Qt编译错误:cannot find -lGL 在编译之前常见的一个小工程(在mac下创建的)的时候,出现lGL错误,我以为是不兼容,但又新建了一个项目,编译出错: cannot find -l ...

  4. Qt编译错误“GL/gl.h:No such file or directory”的解决方法

    Qt编译错误"GL/gl.h:No such file or directory"的解决方法 参考文章: (1)Qt编译错误"GL/gl.h:No such file o ...

  5. 关于QT编译错误问题

    这里的意思是出现QT编译错误: 1.之前编译没问题,突然就报错了,而且错误根本不知道啥玩意. 2.编译出现不能自动更新,比如更改ui但是编译之后没该改变. ... 解决方法: 1.删除Makefile ...

  6. QT编译错误:cannot find file: *.pro

    编译一个之前同事写的QT程序,结果出现了编译错误:cannot find file: *.pro 解决方法:将程序放在英文路径下 尽管出现一些红色的编译信息部门,但是最终还算是编译成功了~ 转载于:h ...

  7. Qt 编译错误 cannot find -lGL 解决方法

    在 Linux 下编译 Qt 代码的时候出现 cannot find -lGL 的错误,如下所示: 图1 编译错误信息 解决方法 在终端中执行如下命令: sudo apt-get install li ...

  8. 两个常见Qt编译错误的解决

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 作者:朱 ...

  9. QT编译错误:invalid application of 'sizeof' to incomplete type 'Qt3DRender::QPickEvent'

    执行3D常将中实体的pick操作,结果出现了编译错误:invalid application of 'sizeof' to incomplete type 'Qt3DRender::QPickEven ...

最新文章

  1. jQuery获取带点的id元素
  2. SAP推出下一代数字转型平台SAP HANA 2
  3. 专家解读:阅读AI论文对找工作有帮助吗?
  4. ubuntu之apache正向代理及反向代理(ProxyPass\ProxyPassReverse)
  5. oracle时间戳效率问题,时间戳问题 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
  6. pycharm 快捷键2
  7. ImageFieldFile:XXXX is not JSON serializable
  8. 利用FreeType和OpenGL进行矢量字体渲染
  9. 不兼容惹的祸,Calibre 作者拒绝迁移至 Python 3
  10. python中元组和列表的区别_Python 序列:列表、元组
  11. Python3之正则表达式详解!
  12. 企业微信登录本地调试
  13. MATLAB绘制平方函数,MATLAB绘制由函数x^2/4+y^2/9+z^2/16=1形成的立体图,
  14. 【历史上的今天】1 月 22 日:苹果广告震动硅谷;计算机科学公司创始人出生;科学计量学先驱诞生
  15. 如何搭建 MTK 6577模拟器
  16. DBeaver 连接 人大金仓以及其他国产数据库
  17. 解决 Flutter 在 iOS 模拟器中运行卡住问题
  18. 医疗his系统用什么服务器,his软件用什么服务器
  19. spring 多个数据库_在Spring使用多个数据库
  20. eagle PCB软件使用心得

热门文章

  1. 持续领先,九州云位列中国边缘云解决方案市场TOP2
  2. ps2摇杆android图形编程,ROC-RK3308-CC开发实例总结--PS2 Joystick摇杆模块
  3. excel函数:汉字转全拼_30天中30个Excel函数:01 –精确
  4. [持续更新] 神经机器翻译论文汇总 Papers on Neural Machine Translation
  5. 腾讯搞了一个大新闻,躺枪的竟是百度……辣眼睛
  6. 【单片机】汇编指令英文全称
  7. 遵从自己的内心就永远不会迷失前进的方向
  8. 数据标准化的常见方法(Min-Max标准化、Z-Score标准化等)
  9. 基于华为云obs的springMVC文件上传下载,简单demo
  10. lombok 1.18.10