目录
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)错误问题