当前位置: 首页 > news >正文

c++中this指针使用bug

1.bug代码:

template<typename T>
class Test {
private:T num;
public:Test() {}void setData(const T& x) {this.num = x;  // ❌ 这里会报错}void showData() {cout << this->num << endl;}
};

2. 报错原因

在 C++ 里:

  • this 是一个指针,它指向当前对象的地址。
  • 既然 this 是指针,访问它所指向对象的成员变量或成员函数时,必须用箭头运算符 ->,而不是点运算符 .

正确写法

this->num = x;

为什么不能用点运算符 .

  • . 用于对象本身访问成员:
    Test<int> obj;
    obj.num = 5; // 对象用点运算符
    
  • -> 用于指针访问成员:
    Test<int>* p = &obj;
    p->num = 5; // 指针用箭头运算符
    
  • this 是 Test* const 类型的指针,所以必须写成 this->num

3. 修正后的代码

template<typename T>
class Test {
private:T num;
public:Test() {}void setData(const T& x) {this->num = x;  // ✅ 正确写法}void showData() {cout << this->num << endl;}
};

4. 另外一种情况:模板类中 this-> 的作用

在模板类里,有时 this-> 还有提示编译器的作用

  • 如果成员依赖于模板参数,编译器需要知道它是类的成员,否则可能无法正确解析。
  • 例如:
    template <typename T>
    struct Base {void foo();
    };template <typename T>
    struct Derived : Base<T> {void bar() {this->foo(); // 必须用 this->,否则编译器不知道 foo 是基类的成员}
    };
    
    这是因为在模板中,基类的成员名不会自动进入派生类的作用域,需要用 this-> 或 Base<T>:: 显式访问。

5. 总结

用法适用场景
object.member对象访问成员
pointer->member指针访问成员
this->member在类的成员函数中访问当前对象的成员(因为 this 是指针)

✅ 一句话解释你这个报错

this 是一个指针,访问成员要用 -> 而不是 .,所以 this.num 应该写成 this->num

http://www.dtcms.com/a/434554.html

相关文章:

  • 网站源码中国有限公司外贸网站建设怎么制作
  • 哪家公司做网站专业安装wordpress主题放哪里
  • 我们为什么要封装 localStorage
  • 【AI论文】LongLive:实时交互式长视频生成
  • 企业网站推广总结网站降权是什么意思
  • 消息队列(面试)
  • Presto:一款免费开源的大数据SQL查询引擎
  • AI驱动的软件测试变革:从自动化框架到智能决策
  • The 2024 ICPC Asia Nanjing Regional Contest(2024南京区域赛EJKBG)
  • 面试场景题-
  • 怎样接做网站的活做校园网站代码
  • 【github】秘钥
  • 申请网站建设费教育网站制作定制
  • 网站ipv6改造怎么做让别人做网站怎样才安全
  • 开源库入门教程 Cesium:3D地球和地图库
  • WSL2 的 Ubuntu 系统从 G 盘移动到 F 盘
  • ubuntu20.04编译qt源码5.15.3
  • 保定哪家公司做网站安徽优化推广
  • 网站服务器租赁费用表格网络营销的效果表现在哪几个方面
  • HarmonyOS应用深度开发:ArkTS语法精解与状态管理实践
  • 开源 C# 快速开发(十六)数据库--sqlserver增删改查
  • 在相亲网站认识了一个做红酒生意的深圳做品牌网站
  • AI Agent 设计模式:从理论到实践的完整指南
  • 池州网站开发公司招聘外贸公司大全
  • WSL的安装与使用详解
  • 内网横向移动技术与防御详解
  • PYTHON:Python 新版本下载安装更新py文件Pycharm运行指南
  • Kubernetes中的service
  • Coze源码分析-资源库-编辑工作流-后端源码-流程/技术/总结
  • 医院网站建设招标公告惠州网站建设科技有限公司