C++无法访问头文件中类成员变量的问题求助
C++头文件类成员访问错误解决
你的代码报错翻译为:错误:标识符“SampleRate”未定义
问题核心很明确:SampleRate是learning_cpp类的成员变量,不是全局变量,不能直接在main函数里直接访问,必须遵循C++类成员的访问规则。
下面给两种可行的解决方式:
方式一:创建类的实例对象访问成员
修改你的cpp文件,先实例化类,再通过对象访问成员变量:
#include "learning_cpp.h" int main() { // 创建learning_cpp类的实例对象 learning_cpp my_learning_obj; // 通过对象访问public成员变量 my_learning_obj.SampleRate = 1000; };
方式二:使用静态成员变量(无需实例化类)
如果希望不用创建类对象就能访问这个变量,可以把它声明为静态成员:
修改头文件:
#pragma once #define _USE_MATH_DEFINES #include <iostream> #include <stdlib.h> #include <math.h> #include <vector> class learning_cpp { public: // 声明静态成员变量 static float SampleRate; };
修改cpp文件:
必须在cpp文件中定义这个静态变量(否则会报“未定义的引用”错误),之后就能通过类名直接访问:
#include "learning_cpp.h" // 定义静态成员变量(这一步不能少) float learning_cpp::SampleRate; int main() { // 通过类名直接访问静态成员 learning_cpp::SampleRate = 1000; };
简单总结:头文件里的类成员不是全局变量,要么通过类的实例对象访问,要么声明为静态成员并在cpp中定义后通过类名访问。
内容的提问来源于stack exchange,提问作者crankymidlifecrisis
相关产品推荐
相关产品推荐

