"Cannot declare member function ...to have static linkage"错误
2015-11-20 17:17
567 查看
英文解释: if you declare a method to be static in your .cc file. The reason is that static means something different inside .cc files than in class declarations It is really stupid, but the keyword static has three different meanings. In the .cc file, the static keyword means that the function isn't visible to any code outside of that particular file. This means that you shouldn't use static in a .cc file to define one-per-class methods and variables. Fortunately, you don't need it. In C++, you are not allowed to have static variables or static methods with the same name(s) as instance variables or instance methods. Therefore if you declare a variable or method as static in the class declaration, you don't need the static keyword in the definition. The compiler still knows that the variable/method is part of the class and not the instance. 翻译: 如果在你的.cc文件,你声明的方法是静态的。静态意味着的.cc文件不同于类的声明。 但关键字static有三个不同的含义。 在.cc文件,静态关键字意味着该功能是任何代码该文件外部不可见的。这意味着,你不应该使用静态的.cc文件来定义一个每类方法和变量。 在C ++中,你不能有静态变量或静态方法在实例声明和实例方法中具有相同的名称(S)。 因此,如果你在类声明声明一个变量或方法为静态的,你不需要在定义static关键字在.cc文件。 编译器仍然知道该变量/方法是类的一部分,而不是该实例。 错误的: Foo.h: class Foo { public: static int bar(); }; Foo.cc: static int Foo::bar() { // stuff } 正确的: Foo.h: class Foo { public: static int bar(); }; Foo.cc: int Foo::bar() { // stuff } 这个也是正确的: Foo.h: class Foo { public: static int bar() { // stuff }; };
相关文章推荐
- 老李分享:《Linux Shell脚本攻略》 要点(一)
- 56、LeakCanary——直白的展现Android中的内存泄露
- 想要打包为jar包的Android项目依赖jar包和library,怎么破?
- AT+CSMP 设置短消息文本参数
- 深度学习与计算机视觉系列(2)_图像分类与KNN
- 【经典算法】:爱因斯坦台阶问题
- hbase shell基本命令
- 小胖吃肉
- 多按钮共用一个处理函数(方式不只这一种)
- 持续集成:TestNG组织如何测试用例
- 一直以来伴随我的一些学习习惯(二):时间管理
- Spring JPA 的使用入门
- MSTP基本配置
- 最佳女友
- DCM图--按SeriesNumber进行分类
- [推荐]移动兼容性测试平台
- Java分页查询工具类
- selenium webdriver python 开始
- 【转】使用 JMeter 完成常用的压力测试
- 【转】利用 Apache JMeter 测试 WebSphere 性能