类的静态成员要在类内声明,类外定义。这样做的原因参照 here
类外定义时又要注意哪些内容呢?
这是“尽量不在头文件中定义变量”(参考)的延伸。
class.h
#ifndef __CLASS_H
#define __CLASS_H
class A{
static int var;
};
int A::var = 1;
#endif
main.cpp
int main() {
return 0;
}
test1.cpp
#include "class.h"
test2.cpp
#include "class.h"
报错
$ g++ -o main test1.o test2.o main.o
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: test2.o:test2.cpp:(.data+0x0): multiple definition of `A::var'; test1.o:test1.cpp:(.data+0x0): first defined here
collect2: error: ld returned 1 exit status
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有