int main() { car::init_car_count(); car a("red"); car b("blue"); int num = car::get_car_count(); printf("total cars:%d\n",num); return 0; }
错误讯息为: /tmp/ccSoSdJ3.o: In function `car::car(char const*)': a.cpp:(.text._ZN3carC2EPKc[_ZN3carC5EPKc]+0x12): undefined reference to `car::car_count' a.cpp:(.text._ZN3carC2EPKc[_ZN3carC5EPKc]+0x1b): undefined reference to `car::car_count' /tmp/ccSoSdJ3.o: In function `car::~car()': a.cpp:(.text._ZN3carD2Ev[_ZN3carD5Ev]+0xa): undefined reference to `car::car_count' a.cpp:(.text._ZN3carD2Ev[_ZN3carD5Ev]+0x13): undefined reference to `car::car_count' /tmp/ccSoSdJ3.o: In function `car::init_car_count()': a.cpp:(.text._ZN3car14init_car_countEv[_ZN3car14init_car_countEv]+0x6): undefined reference to `car::car_count' collect2: error: ld returned 1 exit status shanwu@shanwu-laptop:~/c_c++_practice$ vim a.cpp shanwu@shanwu-laptop:~/c_c++_practice$ g++ -o a a.cpp /tmp/ccuH53qO.o: In function `car::car(char const*)': a.cpp:(.text._ZN3carC2EPKc[_ZN3carC5EPKc]+0x12): undefined reference to `car::car_count' a.cpp:(.text._ZN3carC2EPKc[_ZN3carC5EPKc]+0x1b): undefined reference to `car::car_count' /tmp/ccuH53qO.o: In function `car::~car()': a.cpp:(.text._ZN3carD2Ev[_ZN3carD5Ev]+0xa): undefined reference to `car::car_count' a.cpp:(.text._ZN3carD2Ev[_ZN3carD5Ev]+0x13): undefined reference to `car::car_count' /tmp/ccuH53qO.o: In function `car::init_car_count()': a.cpp:(.text._ZN3car14init_car_countEv[_ZN3car14init_car_countEv]+0x6): undefined reference to `car::car_count' /tmp/ccuH53qO.o:a.cpp:(.text._ZN3car13get_car_countEv[_ZN3car13get_car_countEv]+0x6): more undefined references to `car::car_count' follow collect2: error: ld returned 1 exit status c++ static [解决办法]
就会报错了,lz试过没有呀,标准就是让我们这样初始化类静态成员变量的,不管是private、protected还是public的,建议lz去详细的看一看c++关于这方面的资料 [解决办法] 不会报错,编译完全正常: class A { private: static int a; };
int A::a=3; [解决办法] 也是不可以在构造函数里初始化吧!#7在类的外面初始化才是正确的。 int car:: car_count = 0; 静态成员函数和普通函数区别不大!只是没有this指针而已! [解决办法] #include <string.h> #include <stdio.h> class car{ private: char color[10]; static int car_count; public: // Constructor car(const char *a_color){ car_count++; strcpy(color,a_color);