C++中信号和槽中的重载(发送的信号,和槽函数发生重载)

//对于&Teacher::hungry,它返回的是如下两种可能,所以就会产生函数地址二义性。就会出错,treat同理
//eg: void Teacher:: (*p)() =&Teacher::hungry 或者void Teacher:: (*p)(QSting) =&Teacher::hungry`

connect(th,&Teacher::hungry,st,&Student::treat);

所以这样就会出错,简单道理讲解:

# include<iostream>
using namespace std;
# include<string>
void test() {
	cout << "第一" << endl;
}
void test(int a) {
	cout << "第二" <<a<< endl;
}
int main() {
	//所以当test函数发生重载时,&test有两种返回类型,但是不知道应该返回哪个,所以就会出现二义性

	void(*p)() = &test;
	//void(*p)(int) = &test;
	//其中p是函数名,而p()相当于test()语句,就是函数调用
	p();
  system("pause");
	return 0;

 }

输出结果为:第一
所以应该如下:


void (Teacher::*teachersignal2)(QString) =&Teacher::hungry;
void (Student::*studentslot2)(QString) =&Student::treat;
connect(th,teachersignal2,st,studentslot2);

参考视频讲解:https://www.bilibili.com/video/BV1Nb411K7bW?p=12&spm_id_from=pageDriver&vd_source=26e80390f500a7ceea611e29c7bcea38

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值