You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,提问作者김민겸

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:48:00