C++使用this关键字报错「表达式必须具有类类型」如何解决?
错误原因
你遇到的「The expression must have a class type」报错,核心是 C++ 中this是指向当前类实例的指针,不是实例本身,不能用成员运算符.访问属性,必须使用指针成员访问运算符->。
修复步骤
- 替换构造函数内的成员访问写法:将
this.name = n改为this->name = n,this.age = a改为this->age = a - 补充依赖声明:代码中使用了
string类,需要先引入<string>头文件,且string属于std命名空间,需要补充std::前缀避免编译报错 - 调整访问权限(可选,根据业务需要):C++ class 默认成员访问权限为
private,如果需要在类外部创建Person实例,需要将构造函数的访问权限声明为public
修复后的完整代码
#include <string> class Person { private: std::string name; int age; public: Person(); // 写法1:this指针访问 Person(std::string n, int a) { this->name = n; this->age = a; } // 更推荐的写法2:成员初始化列表,性能更优,无需显式使用this // Person(std::string n, int a) : name(std::move(n)), age(a) {} };
内容的提问来源于stack exchange,提问作者김민겸
相关产品推荐
相关产品推荐

