如何将对象属性传入另一类的方法,解决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
相关产品推荐
相关产品推荐

