首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在类C++中重新定义方法

在类C++中重新定义方法
EN

Stack Overflow用户
提问于 2019-02-16 13:25:11
回答 1查看 97关注 0票数 0

我一直在尝试在c++中为我的新游戏创建按钮,我已经为它们创建了一个保存数据的类。我需要能够分配一个方法给每个按钮点击类。例如,假设我有十个按钮,我需要每个按钮在单击时输出一个不同的单词。

代码语言:javascript
运行
AI代码解释
复制
class button{
    float position;


    float scale;

    void on_click();
};

button new_button;
new_button.on_click = {
    std::cout << "HELLO" << std::endl;
}

我怎么才能让这样的东西工作呢?感谢您的回复。

EN

回答 1

Stack Overflow用户

发布于 2019-02-16 15:45:15

通过按字面意思处理问题来修复代码将使用std::function成员,如下所示

代码语言:javascript
运行
AI代码解释
复制
#include <functional>
#include <iostream>

struct button { 
    using callback = std::function<void()>;    
    callback on_click;
    button(callback f) : on_click(f) {};    
    void click() { on_click(); }
};

int main() {
    button b1{[](){ std::cout << "b1\n"; }};
    b1.click();
}

但是,如果唯一的区别是要打印的文本,则只需存储要使用按钮打印的字符串

代码语言:javascript
运行
AI代码解释
复制
#include <string>
#include <iostream>

struct button { 
    std::string message;
    button(std::string s) : message(s) {};    
    void click() { std::cout << message; }
};

int main() {
    button b1{"b1\n"};
    b1.click();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54723520

复制
相关文章
c++类定义和类实现
c++中我们cpp文件和.h文件的区别是,cpp文件是需要编译的文件,成为一个独立的编译单元,而h文件从来是不需要编译,只是用于预处理。
chenjx85
2019/05/25
3.1K0
重新思考自定义容器类的实现
在 Python 中如何编写一个自定义的字典类?大家可能被告诉要使用collections.abc中的类作为基类而不是dict。dict也不是任何时候都不能做基类——当你没有重载任何内建方法时可以直接继承dict。
岂不美哉Frost
2023/10/19
1590
详解Python类定义中的各种方法
首先应该明确,在面向对象程序设计中,函数和方法这两个概念是有本质区别的。方法一般指与特定实例绑定的函数,通过对象调用方法时,对象本身将被作为第一个参数传递过去,普通函数并不具备这个特点。 >>> class Demo: pass >>> t = Demo() >>> def test(self, v): self.value = v >>> t.test = test #动态增加普通函数 >>> t.test <function test at 0x00000000034B7EA0> >>> t.
Python小屋屋主
2018/04/16
1.4K0
【C++】定义自己的String类
这个实现的string类是比较简单的,C++标准模板库里面的string类的方法是非常多的,而且非常复杂。 在这里仅仅给大家演示string内部大概的实现方法
谙忆
2021/01/21
5050
【C++】定义自己的String类
8.3 C++ 定义并使用类
C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。
王瑞MVP
2023/10/21
2370
8.3 C++ 定义并使用类
C++ 自定义复数类
C++练习。 功能:自定义复数类型,实现复数的加、减、乘、除、求共轭复数、乘方、开方等运算。 涉及到的基础知识点有: 运算符重载(+,-,*,/, <<, ^, ==, != 等运算符的重载) 友元函数(友元函数可访问类的私有属性) 函数返回指向数组的指针。此例中数组的元素是类的对象。 左值引用与右值引用 主动抛出异常(使用关键字throw) #include <iostream> #include <cmath> using namespace std; class Division_by_zer
用户6021899
2021/05/20
1.4K0
在静态方法中应用spring注入的类
最近在一次项目的重构中,原项目需要在静态方法中调用service,现在需要更换框架,service需要自动注入,无法再静态方法中调用
二十三年蝉
2018/08/27
2.7K0
C++中sstream类
C++中的sstream类用来操作string,可以向string中写入数据,也可以从string中读取数据。该类在sstream头文件中定义。该类可以分为istringstream和ostringstream,其中istreamstream用来从string中读取数据;而ostringstream用来向string中写入数据。
全栈程序员站长
2022/09/06
4660
C++中的类
类是一种将抽象转换为用户定义类型的C++++工具,他将数据表示和操纵数据的方法组合成一个整洁的包。 比如有一个股票的类,可以把他的价格,持有人,数量等等,我们可以将股票简化,将操作限制为获得股票、增持、卖出股票、更新股票价格、显示关于股票的信息。此外我们还需要存储一些信息
用户7272142
2023/10/11
2210
C++中的类
在C++中模拟JAVA内部类的方法
有时候我们需要把一批互相关联的API用不同的类提供给用户,以便简化每个类的使用难度。但是这样这些类之间的数据共享就成了问题。JAVA的内部类可以自由的访问外围类的所有数据,所以很时候做这的工作,而如果C++也这样做,就变成要增加很多setter和getter。但是,也可以用以下方法模拟实现: 首先,你的内部类头文件一般是被外围类所#include的,所以需要在内部类的声明前增加“前置声明”: namespace outerspace{ class OuterClass; } 然后,再设置一个指向外部类的指针
韩伟
2018/03/05
2.1K0
在C++中模拟JAVA内部类的方法
【程序填空】顺序表类定义 C++
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据 第2行输入要插入的位置和新数据 第3行输入要插入的位置和新数据 第4行输入要删除的位置 第5行输入要删除的位置 第6行输入要查找的位置 第7行输入要查找的位置
叶茂林
2023/07/30
1640
【程序填空】单链表类定义 C++
接着每一次操作后,如果操作成功则输出整个单链表内容,如果操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出表内容
叶茂林
2023/07/30
1310
C++ 自定义数组类模板
本篇通过自定义数组类模板,实现python列表的绝大部分函数,包括: 求最大值 求最小值 排序 在尾部添加元素 在指定位置(默认尾部)删除元素 在指定位置插入元素 在尾部添加进另外一个数组 查找指定值 移除第一次出现的指定值 从尾到头反向排列 切片功能 两个数组相等的判断 列表的数乘复制 等等 以及numpy中的arange函数 涉及到的知识点有: 类模板 函数模板 友元函数模板的类外实现 运算符重载(==, !=, *, +, <<, []) 头文件myArray.hpp代码如下: #
用户6021899
2021/07/05
1.2K0
C++ 开发中,使用类模板实现自定义数组
需求描述: 通过使用 C++ 中类模板的特性,实现一个能够存储任意类型的数组。可以通过在尾部追加的方式在数组中完成数据传入,且可以通过尾部操作删除数组最后一个元素。完整代码如下:
耕耘实录
2022/05/09
9370
5 种在 Vue 3 中定义组件的方法
英文 | https://fadamakis.com/the-5-ways-to-define-a-component-in-vue-3-aeb01ac6f39f
winty
2023/08/23
4160
5 种在 Vue 3 中定义组件的方法
扩展方法必须在非泛型静态类中定义
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。
yaphetsfang
2020/07/30
1.9K0
29.qt quick-在QML中调用C++类
学习链接:https://blog.csdn.net/qq_37997682/article/details/126640154
诺谦
2021/06/22
1.8K0
29.qt quick-在QML中调用C++类
【C++ 语言】面向对象 ( 类定义 | 限制头文件引用次数 | 构造方法 | 析构方法 )
类定义 , 类一般定义在一个单独的文件中 , C++ 的文件名不像 Java 一样必须与类名相同 , C++ 中的文件名可以与类名不相等 , 一般情况下尽量让类名与文件名一致 ;
韩曙亮
2023/03/27
6970
【C++ 语言】面向对象 ( 类定义 | 限制头文件引用次数 | 构造方法 | 析构方法 )
点击加载更多

相似问题

希望在Swift中重新定义willDisplayCell方法。如何重新定义类方法

33

c++重新定义类

12

C++中类的重新定义

218

在C++中重新定义纯虚方法

30

在c++中定义模板类中的方法

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档