#include <stdio.h> #include <windows.h> #include <iostream> class baseWork { public: baseWork(int id) { this->ID = id; } void doSome() { std::cout <<this->ID<< std::endl; } static void p_fun(baseWork* bw) { if (bw!=nullptr) { //bw已经实例化 bw->ID;//ok, bw->doSome();//ok } // error C2597:对非静态成员“baseWork::ID”的非法引用 //std::cout << ID << std::endl; //error C2352:非静态成员函数的非法调用 //doSome(); //error C2355: “this”: 只能在非静态成员函数或非静态数据成员初始值设定项的内部引用 //std::cout << this->ID << std::endl; //不在外部int baseWork::s_ID = 666; 的话报错:fatal error LNK1120: 1 个无法解析的外部命令 //s_ID; } static void p_fun(baseWork bw) { if (&bw != nullptr) { //bw已经实例化 bw.ID;//ok, bw.doSome();//ok } } int ID; static int s_ID; }; int baseWork::s_ID = 666; int main() { baseWork bw(89757); //我把自己当参数 bw.p_fun(&bw); bw.p_fun(bw); //输出: //89757 //89757 system("pause"); }
静态函数限制是真的多,还有哪些C++ 静态函数的坑呢?
C++ 类内静态函数调用非静态变量、函数
最新推荐文章于 2024-03-16 09:26:51 发布