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

如何将对象属性传入另一类的方法,解决SFML正方形不显示问题

问题根因

你在Drawer构造函数中定义了一个和类成员变量同名的局部sf::RectangleShape square对象,所有尺寸、颜色、位置的配置都作用在这个局部对象上。构造函数执行结束后局部对象被销毁,类的成员变量square始终是默认构造生成的空对象,因此绘制时没有任何内容显示,不存在语法错误所以编译不会报错。

修复方案

修改drawer.cpp中的Drawer构造函数代码,不要重新声明局部变量,直接操作类的成员变量即可:

Drawer::Drawer()
{
    // 移除局部变量的类型声明,直接操作成员变量
    square.setSize(sf::Vector2f(200.0f, 200.0f));
    square.setFillColor(sf::Color::Red);
    square.setPosition(20.0f, 20.0f);
}

补充说明

如果担心同名变量屏蔽问题,可以通过this->显式指定操作类成员变量,写法如下:

this->square.setSize(sf::Vector2f(200.0f, 200.0f));

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:05