Qt: Q_OBJECT 与继承,+ 多重继承导致的歧义问题 (*)

118 篇文章 11 订阅

目录

Q_OBJECT 与继承

c++ 多重继承 导致的歧义(ambiguity)错误问题

-----------------------------------------------

1. 继承、多继承,有时会出现各种问题,并不能够实现简单的、成功的继承;特别是在使用第3方类的时候?

2. ??一个臃肿的类,继承并使用它,可能会造成内存等的资源浪费?

3. 有时使用指针,可能更加方便和高效。

4. 在不同的场景里,最佳的实现方法,千变万化,没有固定的模式。

与程序员的使用习惯,也有关系。

理论上的最佳算法,对于具体的程序员来说,却未必就是最佳的。时间?效率?维护?历史和现实的等等因素,需要综合考量。

Qt/C++ : expected class-name before ‘{’ token

https://blog.csdn.net/ken2232/article/details/131259946

=============================

Q_OBJECT 与继承

单继承:Aclass 只要在继承的类(FormB)中,已经包含了可用的 Q_OBJECT,就OK

多继承:错误,参考:c++ 多重继承 导致的歧义(ambiguity)错误问题

#ifndef ACLASS_H
#define ACLASS_H

        

#include "formb.h"

         
/* 继承 11
class FormB : public QWidget
{
    Q_OBJECT
    ...
}
*/ 

/* 继承 22
formb.h
#include <QWidget>
FormB : public QWidget
*/

        

//class Aclass : public QWidget  //继承 11 OK
//class Aclass : public FormB  //继承 22 OK。继承自 用户自定义的类

        

//=============================

//多继承:错误信息

/*
aclass.h:21:30: warning: direct base 'QWidget' is inaccessible due to ambiguity:
class Aclass -> class FormB -> class QWidget class Aclass -> class QWidget
*/
class Aclass : public FormB, public QWidget  //继承 33 错误:direct base 'QWidget' is inaccessible due to ambiguity
{
    Q_OBJECT
public:
    Aclass();

    void aclass_test_slot();
};

#endif // ACLASS_H

参考:

c++ - 多重继承 导致的歧义(ambiguity)错误问题

https://blog.csdn.net/ken2232/article/details/131223091

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值