使用类标识仍无法访问静态变量的技术求助
问题排查与解决:无法访问静态变量
先看看你的代码,问题其实很明显:
#include <iostream> class test { int a, b; public: static float f; }; float test::f; int main() { test::f = 3.14; std::cout << f; // 这里就是出错的地方! }
你在给静态变量赋值的时候确实用了test::f来指定作用域,但到了输出的时候直接写了f——编译器根本不知道这个f指的是什么!因为f是test类的静态成员,不属于全局作用域,你必须明确告诉编译器它属于哪个类。
修复方法很简单,给输出语句里的f也加上类作用域限定符就行:
#include <iostream> class test { int a, b; public: static float f; }; float test::f; int main() { test::f = 3.14; std::cout << test::f; // 加上test::,明确指定作用域 }
当然,如果你觉得每次写test::麻烦,也可以在main函数里用引用简化:
int main() { auto& f_ref = test::f; f_ref = 3.14; std::cout << f_ref; }
不过这种方式虽然简洁,但不如直接写test::f清晰,尤其是在多人协作的代码里,明确的作用域能让其他开发者一眼看懂变量的归属。
内容的提问来源于stack exchange,提问作者ravi
相关产品推荐
相关产品推荐

