Qt信号传递二维数组时,数组指针发生偏移.doc

Qt信号传递二维数组时,数组指针发生偏移.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt信号传递二维数组时,数组指针发生偏移

4月9日 Qt信号传递二维数组时,数组指针发生偏移 signals: ??? void data(int, int [][3], int [][3]); int dd[5][3]= {1, 2, 3, 4}; emit data(5, dd, dd); // SIGNAL 0 void test2::data(int _t1, int _t2[][3], int _t3[][3]) { ??? void *_a[] = { 0, const_castvoid*(reinterpret_castconst void*(_t1)), const_castvoid*(reinterpret_castconst void*(_t2)), const_castvoid*(reinterpret_castconst void*(_t3)) }; ??? QMetaObject::activate(this, staticMetaObject, 0, _a); } 跟踪到这里发现经过const_castvoid*(reinterpret_castconst void*(_t2))处理,_t2和_t3的指针都被改变了。 还没仔细研究类似情况是否会在其他情况下发生,暂做整理。 ============================================================ 数据类型转换:static_cast,const_cast等用法(转载) * C++提供了四种新的类型强制: static_cast const_cast reinterpret_cast dynamic_cast 1)staic_cast静态强制; 不能在无关的指针之间进行static类型强制 class CAnimal { //... public: CAnimal(){} }; class CGiraffe:public CAnimal { //... public: CGiraffe(){} }; int main(void) { CAnimal an; CGiraffe jean; an = static_castCAnimal(jean);//将对象jean强制成CAnimal类型 return 0; } 2、const_cast类型强制 const_cast类型强制将一个const变量变成一个非const的等价形式 int main() { const int j = 99; int * k; k = const_castint *(j);//解除const return 0; } 3、reinterpret_cast运算符 reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上; int main() { int j = 10; int * ptr = j; char * cptr; cptr = reinterpret_castchar *(ptr);//将int指针类型转变为char的指针类型 return 0; } 4、dynamic_cast运算符 dynamic_cast的主要目的是: 1)它返回派生类对象的地址; 2)它测试基类指针是否指向下一尖括号中所指定类型的对象 dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针; class CAnimal { //... }; class CGiraffe:public CAnimal { //... }; class CGoat:public CAnimal { //... }; int main() { CGiraffe gene; CAnimal * aptr = gene; CGiraffe * ptr1,* ptr2; ptr1 = dynamic_castCGiraffe *(aptr); ptr2 = dynamic_castCGoat *(aptr); //return NULL return 0; }

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档