【发布时间】:2022-06-10 19:10:01
【问题描述】:
我正在 cpp 中创建一个小游戏,但我的 Button 类有问题:
class ids::Button : public ids::ASpriteObject {
public:
Button(std::vector<float> pos, std::string texture, int frame, std::function<void(Button&)> ptr, gameState &state);
~Button();
std::string getType();
void checkCollisions();
void drawAsset(std::map<std::string, ModelS> modelMap);
void launchGame();
void settings();
void exit();
void mainMenu();
void increaseSound();
void decreaseSound();
void increaseFPS();
void decreaseFPS();
protected:
private:
std::function<void(Button&)> _function;
gameState &_gameState;
};
如您所见,Button 在其构造函数中采用 std::function。多亏了它,我为按钮分配了单击时将执行的功能。
这是我的问题:使用我的按钮,我想修改其他类对象,例如 Text 类:
class Text : public ids::AStaticObject {
public:
Text(std::vector<float> pos, std::string text, float size);
~Text();
void drawAsset(std::map<std::string, ModelS> modelMap);
protected:
private:
Font _font;
std::string _text;
Vector2 _pos;
float _size;
};
点击后,我想修改_text。 我可以将我的 Text 对象的引用传递给我的 Button,但这并不聪明,最终我应该用我的按钮修改其他对象...
感谢您的帮助!
【问题讨论】:
-
问题是什么?您知道
std::function可以为您保存对Text对象的引用吗? -
嗨!我不知道,std::function 可以引用一个方法,但是一个对象?那是什么语法?感谢您的帮助!
-
我可以模板化这个对象,因为按钮不一定需要文本?
-
我真的不明白你的意思,也许你想要
std::bind?
标签: c++ class reference hierarchy